有选择地设置对象属性

时间:2013-02-05 08:54:22

标签: c#

我有一个包含这些属性的业务对象:

Public class Person
{
  prop int ID {get; set;}
  prop string Name {get; set;}
  prop string Address1 {get; set;}
  prop string Address2 {get; set;}
}

有这种方法

Public Void CreateEntity(Person objPerson)
{
 Person newPerson = new Person();
 newPerson.Name = objPerson.Name;
 newPerson.ID = objPerson.ID;
 newPerson.Address1 = objPerson.Address1;
 newPerson.Address2 = objPerson.Address2;

  ...

  // Do some stuff
 }

它基本上将objPerson的所有属性分配给newPerson。

有没有办法为newPerson分配选择性属性?

而不是一对一,可以选择性地完成,就像只做

一样
 newPerson.Address1 = objPerson.Address1;
 newPerson.Address2 = objPerson.Address2;

在方法中。

我可以使用外部配置来定义所需的属性。 因此,如果该配置只有Address1和Address2,则newPerson只会获得这两个分配。

可以这样做吗?

问候。

3 个答案:

答案 0 :(得分:1)

如果我理解了你想要的东西,你可以使用对象初始化器

var person = new Person{ ID = 123456, Name = "Foo"};

Object and Collection Initializers (C# Programming Guide)

答案 1 :(得分:0)

使用对象初始值设定项:

var obj = new Person { ID = 1, Name = "Test" };

答案 2 :(得分:0)

为每个公共属性添加私有字段,并在公共属性中使用此字段,而不是直接使用get; set;

然后将您的条件写入setter,并且只有在条件满足时才更改私有相关的私有字段。

private int id;

public int ID {
get
{
    return id;
} 
set
{
    if(someCondition)
       id = value;
} 

}