2013-02-05 79 views
0

我有这些特性的业务对象:设置对象属性选择

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

可以这样做吗?

问候。

回答

1

如果我理解你想要正确的,你可以使用对象初始化

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

Object and Collection Initializers (C# Programming Guide)

+0

如何使它通用?如果要设置的属性可以配置,然后只设置那些属性? – Codehelp

+0

@Codehelp,我很难明白你到底在问什么...... – gdoron

+0

我已经编辑了这个问题来包含一个场景。感谢您的时间,并感谢您的帮助。 – Codehelp

0

与对象初始化:

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

添加私有字段为每你的公共财产,并在你的公共财产中使用这些字段,而不是直接使用get; set;

然后把你的条件写入引用者,并且只有当条件满足时才改变私有相关的私有字段。

private int id; 

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

}