2012-04-25 41 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