Подтвердить что ты не робот

Дженерики в С# - как я могу создать экземпляр типа переменной с аргументом?

У меня есть класс generics, где я хочу создать экземпляр объекта с общим типом. Я хочу использовать аргумент для конструктора типа.

Мой код:

public class GenericClass<T> where T : Some_Base_Class, new()
{
    public static T SomeFunction(string s)
    {
        if (String.IsNullOrEmpty(s))
            return new T(some_param);
    }
}

Я получаю сообщение об ошибке

new T(some_param)

'T': не может предоставлять аргументы при создании экземпляра переменной Тип

Любые идеи, как я могу это сделать?

4b9b3361

Ответ 1

Посмотрите Activator.CreateInstance. Например:

var instance = Activator.CreateInstance(typeof(T), new object[] { null, null });

Очевидно, заменяя null соответствующими значениями, ожидаемыми одним из конструкторов типа.

Если вы получили ошибку компилятора cannot convert object to type T, включите as T:

var instance = Activator.CreateInstance(typeof(T), 
                  new object[] { null, null }) as T;