/ / Трансляція до типу з імені типу у вигляді рядка - c #, .net, відбиття, лиття

Вкажіть тип з імені типу як рядок - c #, .net, reflection, casting

У мене є існуючий базовий тип, і я хотів би привести його до похідного базового типу за іменем типу у вигляді рядка, тож приблизно так:

public void DoStuffInDerivedType(string derivedName) {
(base as Type.GetType(derivedName)).DoThisThing();
}

Я майже впевнений, що цього не можна зробити, але було б добре знати напевно. Дякую

EDIT: Я розумію, що міг побудувати об’єкт, використовуючи відображення від імені типу, але я хочу використовувати існуючий об’єкт

Відповіді:

5 за відповідь № 1

Я повторю пораду, що вам, мабуть, не потрібно цього робити, але тому, що я робив цю операцію раніше:

Convert.ChangeType(ItemToCast, Type.GetType(stringNameOfType)))

Має працювати для вас.


2 для відповіді № 2

Я не думаю, що ви треба щоб передати його похідному типу. Ви повинні мати можливість передати його на базовий тип і використовувати спільний інтерфейс (будь то базовий клас або буквальний інтерфейс), щоб виконувати все, що ви хочете зробити.

Якщо ні, розгляньте можливість додавання поведінки як вимоги до інтерфейсу може роби це так.

Нарешті: одна можливість, коли ви "d треба зробити це таким чином, якщо ви "перевизначаєте актори ... у цьому випадку я майже впевнений, що ви не можете зробити це без особливих роздумів.