在你的具体情况下,我会说你的问题有异味,我的意思是你看起来只是在错误的方向。
所以我同意@Jamiec评论:
如果你有单独的类单独的目的(模型,数据库VS实体),那么它不清楚为什么你需要一个通用的方法,以“建立一个列表”。
要回答标题中的问题,这里的代码(但是这样做的方式是只是奇怪):
public interface IPerson
{
public int Id {get;}
public string Name {get;}
}
public GoodPerson : IPerson
{
public int Id {get; set;}
public string Name {get; set;}
public int GoodDeedCount {get; set;}
void SayGoodDay(IPerson toPerson)
{
GoodDeedCount++;
return $"Good day, {toPerson.Name}! :)"
}
}
public BadPerson : IPerson
{
public int Id {get; set;}
public string Name {get; set;}
public int Badness {get; set;}
void SayShutUp(IPerson toPerson)
{
Badness++;
return $"Shut up, {toPerson.Name}!"
}
}
public UglyPerson : IPerson
{
public int Id {get; set;}
public string Name {get; set;}
void SayNothing() { }
}
public static List<T> BuildList<T>()
where T: new()
{
var result = new List<T>();
if (T is GoodPeson)
{
result.Add(new GoodPerson{Id = 1, Name = "Pinky", GoodDeedCount = 0});
result.Add(new GoodPerson{Id = 2, Name = "Brain", GoodDeedCount = 0});
}
else if (T is BadPerson)
{
result.Add(new BadPerson{Id = 1, Name = "Sunshine", Badness = 0});
}
else if (T is UglyPerson)
{
result.Add(new UglyPerson{Id = 1, Name = "No", Badness = 0});
}
return result;
}
为什么你需要两个相同的类名称不同? –
如果没有关于如何实际填充这些列表的信息,问题并不十分清楚 – Evk
“可以这样做吗?” - 是的你可以。建议的功能没问题。但问题是 - 这是你真正需要的吗? – pkuderov