我想使我的方法通用,我卡在一個點,需要您的幫助。該代碼的情況是我有一個抽象類,說MyBaseAbs
其中包含常用的屬性:需要有關通用C#方法的解決方案
public abstract class MyBaseAbs
{
public string CommonProp1 { get; set; }
public string CommonProp2 { get; set; }
public string CommonProp3 { get; set; }
}
現在我有子類:
public class Mychild1: MyBaseAbs
{
public string Mychild1Prop1 { get; set; }
public string Mychild1Prop2 { get; set; }
public string Mychild1Prop3 { get; set; }
}
和另一子類:
public class Mychild2: MyBaseAbs
{
public string Mychild1Prop1 { get; set; }
public string Mychild2Prop2 { get; set; }
}
現在我必須根據Mychild1
和Mychild2
創建一個需要執行某些操作的常用方法,所以我所做的是:
public MyCustomClass SaveOperation<T>(T myObj)
where T : MyBaseAbs
{
SaveObject obj = new SaveObject();
}
所以這種方法內我需要編寫通用代碼根據傳遞的子對象它執行映射SaveObject
對象。我怎樣才能確定哪個對象被傳遞並相應地使用屬性。
沒有關於SaveOperation方法的足夠信息。一個明顯的解決方案是如何檢查類型。 'if(myObj is Mychild1)' –
如果你的代碼需要爲不同的子類做不同的事情,爲什麼要使它成爲通用的?爲每個具體子類寫一個'SaveOperation',並且(如果需要的話)有一個基於具有公共代碼並且每個具體方法可以調用的基類的私人'SaveOperation'。 –
SaveOperation是什麼類? – Enigmativity