有没有办法通过实例化分配泛型?

时间:2014-11-07 08:58:51

标签: c# generics

有没有办法通过实例化来分配T,如下面的“假设”示例所示:

MyObject DummyObject = new MyObject(); 
DummyObject.MyNestedObject  = new MySecondObject<string>()

public class MyObject //**Normally is specified as MyObject<T>** 
{   
    public MySecondObject<T> MyNestedObject { get; set; } 
}

我想在MySecondObject的实例化上定义T.我不想在MyObject中定义它。

1 个答案:

答案 0 :(得分:2)

不,您必须在班级中声明T。否则T将不存在于该上下文中。

public class MyObject<T>

另一种方法是创建一个接口,在MySecondObject泛型类中实现它。然后将属性类型设置为接口而不是MySecondObject<T>

interface IMyInterface
{

}

class MySecondObject<T> : IMyInterface
{

}

public class MyObject
{   
    public IMyInterface MyNestedObject { get; set; } 
}