克隆以通过构造函数设置此对象的属性

时间:2012-03-06 13:02:50

标签: c#

我有以下问题。我希望能够在不使用反射的情况下将其设置为传递的引用,可以这样做吗?

//partial class of a Linq-to-SQL class 
public partial class Product
{
   public Product (Product product, List<ProductAttributes> productAttributes)
   {
      // without individually setting all the properties

      //then just set any other properties
      this.ProductAttributes = productAttributes;
   }
}

4 个答案:

答案 0 :(得分:3)

你基本上不能。

你只能在结构中设置this,即使这样,通常也是一个坏主意:)

如果您可以解释您尝试实现的更高级别目标,我们可以提供更多帮助 - 但您只是无法更改this的值引用类型,有或没有反射。

答案 1 :(得分:2)

您无法在课程中为this分配任何内容,因为只读

我怀疑你是因为设计糟糕而想这样做的。您可能应该发布您真正想要的内容,而不是您希望如何,以便我们提供更合适的答案。

答案 2 :(得分:1)

您无法在引用类型中设置this(并且在值类型中设置它可能不是要宽恕的东西)。如果你想要做的是对象的字段或属性的浅(或深)副本,那么你有两个选择:

  1. 手动
  2. 反射
  3. 语言和运行时都没有任何内置工具来自动执行浅或深复制,并且有充分的理由。无法确定任何给定类型的外观。

答案 3 :(得分:0)

抱歉,但这不可能神奇地做。您需要使用反射,或者编写手动执行复制的方法。当然,multiple libraries可以为您做到这一点。

相关问题