将信息从父对象复制到子对象

时间:2016-04-18 19:00:23

标签: c#

所以我有一个父实体Producer及其子ProducerNS

ProducerNS继承了Producer的所有属性和其他字段,让我们调用anyColumn

我有一个对象Producer,我想将对象复制到ProducerNS中,就像这样,

Producer producer = getproducer();
ProducerNS producerns = producer;
producerns.anyColumn = 'hellobunnies';

但是,我知道上面的语法不正确。我可以单独转移所有属性吗? (制作人有很多领域)如果是这样,怎么样?

2 个答案:

答案 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';