[英]C# derived class initialization
我的 C# 代碼場景:
public class BaseClass
{
public int A;
public float B;
//a multitude of other fields
public string Y;
};
public class DerivedClass:BaseClass {
public string Z;
public DerivedClass (BaseClass b) {
//??
}
}
我想在沒有顯式成員復制的情況下編寫這個 DerivedClass 構造函數。 在 C++ 中,默認的 BaseClass 構造函數會為我完成。 先感謝您。
我不知道在 c# 中編寫功能齊全的復制構造函數的簡單方法。 因此,您可以手動在BaseClass
中實現它,也可以使用反射來自動化它。
最后一個選擇是嘗試使用Automapper ,它有一些限制(但對於提供的代碼應該可以工作),就它可以處理的內容而言 - 只有公共屬性/字段將被映射,實現將如下所示:
public class BaseClass
{
private static readonly IMapper _mapper;
static BaseClass()
{
var config = new MapperConfiguration(cfg => cfg.CreateMap<BaseClass, BaseClass>());
_mapper = config.CreateMapper();
}
public int A;
public float B;
//a multitude of other fields
public string Y;
public BaseClass(){}
public BaseClass(BaseClass b)
{
_mapper.Map<BaseClass, BaseClass>(b,this);
}
};
public class DerivedClass : BaseClass
{
public string Z;
public DerivedClass(BaseClass b): base(b)
{
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.