如何使用Object Initializer为不同的属性分配相同的值

时间:2013-01-23 12:42:51

标签: c# object-initializers

我尝试为对象初始值设定项中的两个不同属性赋值并失败。

  

在下面的代码中,我尝试将Expand和Select属性指定为true。   但我得到错误'当前名称选择不存在   上下文

这是我的代码

public class MyClass{
public String Title{get;set;}
public String Key{get;set;}
public bool Expand{get;set;}
public bool Select{get;set;}
public bool Editable{get;set;}
}

new MyClass()
  {
   Title = "Murali",
   Key = "MM",                       
   Expand = Select = true
  }

此外,我需要根据这两个属性

指定另一个可编辑的属性

这样的东西
new MyClass()
  {
   Ediatable=(Select && Expand)
  }

我如何做上述逻辑? Object Initializer是否支持它?

1 个答案:

答案 0 :(得分:1)

您无法在=的右侧引用您正在构建的对象的属性,即,您只能分配属性,但不能从属性中读取。

可能的解决方案:

var expandAndSelect = true;

var result = new MyClass
{
    Title = "Murali",
    Key = "MM",                       
    Expand = expandAndSelect,
    Select = expandAndSelect,
};

var select = true;
var expand = false;

var result = new MyClass
{
    Expand = expand,
    Select = select,
    Editable = select & expand,
};