2012-04-25 40 views
1

當我實例化一個新的entiti,它看起來像這樣:避免冗餘更新對象的屬性

var myEntity = new MyEntity() 
{ 
    Field1 = "myValue", 
    Field2 = "myOtherValue", 
    ... 
} 

這避免了寫myEntity.Field1很多時間。

但是,當我要更新多個屬性,我不知道有什麼辦法來避免代碼重複。所以目前,我這樣做:

myEntity.Field1 = "myNewValue"; 
myEntity.Field2 = "myOtherNewValue"; 
... 

C#是否允許更簡潔的方式更新多個屬性?

+0

我不知道,如果它甚至有可能得到比你目前有什麼更簡潔的 - 更何況,如果C#已實施了語法。 – Jeff 2012-04-25 15:03:08

+2

你爲什麼不創建一個字段的方法UpdateEntity作爲參數,並重新使用這種方法嗎? – daryal 2012-04-25 15:03:24

回答

1

都能跟得上。 VB.NET有With statement,但在C#中沒有相應的東西。

2

去上@ daryal的評論上面,你可以創建一個所有參數的更新方法是可選的:

public void UpdateEntity(string Field1 = null, string Field2 = null, string Field3 = null) 
{ 
    this.Field1 = Field1 ?? this.Field1; 
    this.Field2 = Field2 ?? this.Field2; 
    this.Field3 = Field3 ?? this.Field3; 
} 

然後調用它命名參數:

e.UpdateEntity(Field1: "foo", Field3: "fiz"); 

這不是最乾淨的解決方案,但另一種選擇。如果我是這樣做的東西所有的時間,我可能會用「C#與關鍵字相當於」那@布賴恩共享去。

注:這種解決方案需要C#4