我有一个具有以下属性的业务对象:
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" };