在你的具體情況下,我會說你的問題有異味,我的意思是你看起來只是在錯誤的方向。
所以我同意@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