【发布时间】:2012-10-01 09:03:45
【问题描述】:
我的实体有基类
public class Entity<T> where T : Entity<T>, new()
{
public XElement ToXElement()
{
}
public static T FromXElement(XElement x)
{
}
}
我必须使用这种奇怪的构造Entity<T> where T : Entity<T>,因为我希望静态方法 FromXElement 是强类型的
另外,我有一些实体,像这样的
public class Category : Entity<Category>
{
}
public class Collection : Entity<Collection>
{
}
如何使用基类创建我的实体的通用列表?
var list = new List<Entity<?>>();
list.Add(new Category());
list.Add(new Collection());
【问题讨论】:
-
你想完成什么?为什么需要集合中的这些不同类型?
-
类 Category 和 Collection 是...本身的泛型类型?
-
@DanielPersson 它被称为curiously repeating template pattern
-
好的,我明白了。谢谢你把它理顺了:)
-
您不需要 Entity
约束,如果它的唯一目的是访问 FromXElement。只需从 Entity 派生(即 Category : Entity { } ),您可以通过 Category.FromXElement(element) 调用它i> 这将具有 Category 的强类型返回值
标签: c# generics collections