我正在尝试将所有值从SuperClass传递到构造函数中的子类。 我的想法是我要在构造函数中传递超类对象,它会自动将值填充到当前对象(子类)。
我遇到的错误'这= a'是:
Cannot assign to 'this' because it is read-only
我的视图模型类
public class ItemDetailViewModel : Models.AssetItem
{
public ItemDetailViewModel()
{
}
public ItemDetailViewModel(Models.AssetItem model)
{
var config = new MapperConfiguration(cfg => cfg.CreateMap<Models.AssetItem, ItemDetailViewModel>());
var mapper = config.CreateMapper();
var a = mapper.Map<ItemDetailViewModel>(model);
this = a;
}
// Other Properties & Methods for View Models
}
如何将数据从超类复制到子类?
有没有更好的方法将属性(具有相同名称)从一个对象复制到另一个对象?
答案 0 :(得分:1)
我认为你想要的是修改超级(父)类,使其具有复制构造函数。 Article on MSDN解释了这一点,第二篇关于在构造时调用基类方法的文章也有一个good example for you,但是对于你的例子,你想要的是下面的“喜欢”:
// Used a shortened version of the name for the example here
public class AssetItem
{
public AssetItem(AssetItem other)
{
// COPY the contents of other to your "this" instance one element at a time.
// Don't try assigning over "this"
}
}
public class ItemDetailViewModel : Models.AssetItem
{
public ItemDetailViewModel()
{
}
public ItemDetailViewModel(Models.AssetItem model)
: base(model)
{
// Your superclass is "set up" already by now
}
// Other Properties & Methods for View Models
}
阅读这两个示例,看看是否有帮助。如果你无法控制超类,那就更难了。它可能已经有了一个复制构造函数,你只需要查找它。