我想使我的方法通用,我卡在一个点,需要您的帮助。该代码的情况是我有一个抽象类,说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