Информация об изменениях

Сообщение передать generic через строку в <T> от 04.01.2022 16:14

Изменено 04.01.2022 16:17 Hermitap

передать generic через строку в <T>
Доброго всем.

Есть такой кусок кода.

   static void Main(string[] args)
        {
            CallClass<myclass1>();        
        }

        static void CallClass<T>() where T: new()
        {
            T cls = new T();
            ShowName((IInterface)cls);
        }


То что нужно тут для меня работает. (Это тестовый набросок)

Можно ли вызвать CallClass<myclass1>(); но myclass1 (нужный мне класс) как то передать через строку?
У меня таких классов будет много. И данные я буду брать из бд в зависимости от поля вызывать CallClass с нужным классом.
Можно конечно написать SWSITCH и в зависимости от данных вызвать типа такого
 switch
    case 1  CallClass<myclass1>();   
    case 2  CallClass<myclass2>();   
    case 3  CallClass<myclass3>();   
    case 4  CallClass<myclass4>();   
    .....

Я умею динамически вызывать нужный класс через System.Reflection.Assembly.GetExecutingAssembly().CreateInstance("ConsoleApp6.myclass1");
но так было бы CallClass<T>

Спасибо.
передать generic через строку в <T>
Доброго всем.

Есть такой кусок кода.

   static void Main(string[] args)
        {
            CallClass<myclass1>();        
        }

        static void CallClass<T>() where T: new()
        {
            T cls = new T();
            ShowName((IInterface)cls);
        }


То что нужно тут для меня работает. (Это тестовый набросок)

Можно ли вызвать CallClass<myclass1>(); но myclass1 (нужный мне класс) как то передать через строку?
У меня таких классов будет много. И данные я буду брать из бд в зависимости от поля вызывать CallClass с нужным классом.
Можно конечно написать SWSITCH и в зависимости от данных вызвать типа такого
 switch
    case 1  CallClass<myclass1>();   
    case 2  CallClass<myclass2>();   
    case 3  CallClass<myclass3>();   
    case 4  CallClass<myclass4>();   
    .....

+Я умею динамически вызывать нужный класс через System.Reflection.Assembly.GetExecutingAssembly().CreateInstance("ConsoleApp6.myclass1");
но так было бы лучше и красивее как то через CallClass<"T">

Спасибо.