我有多個類,如:靜態方法調用
public class Base { }
public class Base1: Base { public static List<Base1> LoadFromXml(string path) }
public class Base2: Base { public static List<Base2> LoadFromXml(string path) }
然後我想有這樣的方法:
public List<T> PrepareBase<T>() where T: Base { return T.Load("C:\test.xml"); }
所以,我沒有做的方法爲每種類型。 但我不知道如何做到這一點或類似的東西。
問題是我無法使基類的LoadFromXml方法已知,因爲靜態繼承不是一件事情。也沒有用靜態方法創建獨立的接口。
有沒有辦法做到這一點或我是否期待太多?
編輯: 的LoadFromXml方法的一個例子:
public class Base1
{
public int ID { get; set; }
public string PropertyOnlyInBase1 { get; set; }
public static List<Base1> LoadFromXml(string path)
{
List<Base1> baseList = new List<Base1>();
XDocument doc = XDocument.Load(path);
foreach(var node in doc.Descendants("Base1"))
{
Base 1 base = new Base1() { ID = node.Attributes["id"] };
base.PropertyOnlyInBase1 = node.Element("PropertyOnlyInBase1");
baseList.Add(base);
}
return baseList;
}
}
所以基類也有一些獨特的性能。這就是爲什麼我首先需要繼承的原因。
不可能的。靜態方法綁定到它們的定義類。 –
如果你想要多態性,你爲什麼不把它變成實例方法?或者可以返回不同類型的列表的單個泛型靜態方法? –
你打算如何調用'PrepareBase'?你想用它輸出什麼? (換句話說......假設你可以這麼做 - 就像你寫的那樣,使用它的語句看起來像什麼?) – Amit