【发布时间】:2013-10-23 13:49:16
【问题描述】:
如何在多个子类中实现一个超类中定义的泛型方法? 我需要由调用子类实例的类型决定正确的子类方法:
var someClassObj = new SubClass();
var = someClassObj.BuildList(v1, v2);
public abstract class SomeBase
{
public List<T> BuildList<T>(int v1, int v2)
{
var results = new List<T>();
for (int i = v1; i < v2; i++)
{
results.Add(AddItem<T>());
}
return results;
}
protected abstract T AddItem<T>();
}
public class SubClass : SomeBase
{
protected override BusinessThing AddItem<T>()
{
var entity = new BusinessThing();
entity.Name1 = "1";
entity.Name2 = "2";
entity.Name3 = "3";
return entity;
}
}
public class BusinessThing
{
public string Name1 { get; set; }
public string Name2 { get; set; }
public string Name3 { get; set; }
}
上述内容不成立:覆盖方法'T SomeBase.AddItem()'时无法更改返回类型
【问题讨论】:
-
你尝试过 someClassObj.BuildList
(v1, v2); 吗?
标签: c# generics inheritance