獲取類我有一個抽象類,有幾個派生類通過字符串值
public abstract class MyObject
{
public string name { get; set; }
public bool IsObject(string pattern);
...
}
public class MyObjectA : MyObject
{
public string name { get { return "MyObjectA"; } set; }
public bool IsObject(string pattern) { ... }
...
}
public class MyObjectB: MyObject
{
public string name { get { return "MyObjectB"; } set; }
public bool IsObject(string pattern) { ... }
...
}
現在我想有一個函數,它返回我的基於字符串的特定類(MyObjectA/MyObectB)。問題是,我有很多if/else-clause來得到它:
public MyObject Create(string pattern)
{
MyObjectA obj = new MyObjectA();
if(obj.IsObject(pattern)
{
return obj;
}
else
{
MyObjectB objb = new MyObjectB();
if(objb.IsObject(pattern);
return objb;
else
...
}
}
這看起來很糟糕。什麼是更好的方法來做到這一點?
+1良好的通話。顯式刪除'set'也是很好的。 –
這只是一個例子。名稱字符串不是確切的類名稱,但我可以將其轉換爲它。 – Link