小编Mer*_*dov的帖子

类型参数的通用类

有没有办法从类型参数创建泛型类.

我有这样的事情:

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>();
    }
}
Run Code Online (Sandbox Code Playgroud)

我想要的是从Type创建GenericClass.例如:

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

Assert.AreEqual(typeof(GenericClass<OneMoreClass>), generic.GetType());
Run Code Online (Sandbox Code Playgroud)

在这里,我希望获得实例,GenericClass<OneMoreClass>但我得到了GenericClass<Type>

我也尝试过使用那种类型的实例.例如:

var generic = GenericClass.GetInstance(Activator.CreateInstance(SC.TypeOfAnotherClass));
Run Code Online (Sandbox Code Playgroud)

这次我得到了 GenericClass<object>

有没有办法完成这项任务?

c# generics types

6
推荐指数
1
解决办法
3770
查看次数

标签 统计

c# ×1

generics ×1

types ×1