2013-02-05 66 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; 
} 

}