选择性地设置对象属性



我有一个具有以下属性的业务对象:

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只会分配这两个地址。

这能做到吗?

谨致问候。

如果我正确理解您想要什么,您可以使用对象初始化器:

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

对象和集合初始化器(C#编程指南)

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

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

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

}

使用对象初始值设定项:

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

最新更新