所以我有一个父实体Producer
及其子ProducerNS
。
ProducerNS
继承了Producer
的所有属性和其他字段,让我们调用anyColumn
我有一个对象Producer,我想将对象复制到ProducerNS中,就像这样,
Producer producer = getproducer();
ProducerNS producerns = producer;
producerns.anyColumn = 'hellobunnies';
但是,我知道上面的语法不正确。我可以单独转移所有属性吗? (制作人有很多领域)如果是这样,怎么样?
答案 0 :(得分:0)
您希望将生产者对象的深层副本复制到生成器对象中。
在这里查看有关在c#中执行深层复制的想法,请记住,您的子类显然具有您需要考虑的附加属性:How do you do a deep copy of an object in .NET (C# specifically)?
这是专门针对子类复制的帖子:How to "clone" an object into a subclass object?
另一种选择是使用反射来获取生产者对象的属性列表,并使用生成器对象中每个属性的值。这可以在一个简单的foreach循环中完成
答案 1 :(得分:0)
在不手动实现复制构造函数的情况下实现所需功能的最佳方法是让getproducer()
函数成为通用函数:
T getproducer<T>()
where T : Producer, new()
{
var result = new T();
...
return result;
}
...
ProducerNS producerns = getproducer<ProduceNS>();
producerns.anyColumn = 'hellobunnies';