Универсальный класс из параметра типа

Есть ли способ создать общий класс из параметра типа.

У меня есть что-то вроде этого.:

public class SomeClass
{
    public Type TypeOfAnotherClass { get; set; }
}

public class OneMoreClass
{
}

public class GenericClass<T>
    where T : class
{
    public void DoNothing() {}
}

public class GenericClass
{
    public static GenericClass<T> GetInstance<T>(T ignored)
        where T : class
    {
        return new GenericClass<T>();
    }
}

Я хочу создать GenericClass из Type. Пример:

var SC = new SomeClass();
SC.TypeOfAnotherClass = typeof(OneMoreClass);
var generic = GenericClass.GetInstance(SC.TypeOfAnotherClass);

Assert.AreEqual(typeof(GenericClass<OneMoreClass>), generic.GetType());

Здесь я ожидаю получить экземпляр GenericClass<OneMoreClass>, но получаю GenericClass<Type>

. Я также пытался использовать экземпляр этого типа. Пример:

var generic = GenericClass.GetInstance(Activator.CreateInstance(SC.TypeOfAnotherClass));

На этот раз я получаюGenericClass<object>

Есть ли способ выполнить эту задачу?

6
задан Paul Bellora 25 April 2012 в 15:50
поделиться