【发布时间】:2014-10-18 17:21:01
【问题描述】:
我已经搜索过,但找不到我需要做的事情的答案。 我需要有两个从基类继承的类,具有通用属性。属性的类型应由编译器确定,具体取决于类的类型。 现在,我有这个:
public abstract class AbstractClass<T>
{
public abstract List<T> Items { get; set; }
}
public class ChildClass1 : AbstractClass<MyType1>
{
public override List<MyType1> Items { get; set; }
}
public class ChildClass2 : AbstractClass<MyType2>
{
public override List<MyType2> Items { get; set; }
}
但是当我创建一个新的 AbstractClass 对象时,我仍然需要指定我想要的类型:
AbstractClass<MyType1> child1 = new ChildClass1();
如何做才能在创建实例时不必指定属性的类型?
例如:
AbstractClass child1 = new ChildClass1();
【问题讨论】:
-
您希望编译器如何推断抽象类的泛型类型
T? -
该代码无法编译,您没有覆盖抽象属性。
-
糟糕,我的意思是在 Items 属性中添加覆盖
-
如果您不添加任何附加功能,您甚至不必声明
Items属性摘要,也不必覆盖它们。简单的public List<T> Items {get; set;}就足够了
标签: c# .net generics properties abstract