C# 4.0 匿名类型语法

C# 4.0 匿名类型语法,c#-4.0,c#-3.0,C# 4.0,C# 3.0,我知道我们可以使用这种语法 var r = new MyType { name = "dd"} 有没有可能以更简单的方式使用这种语法 MyType myType = GetMyType("some method returns instance of mytype"){ name="myname", otherProp = otherPro, ExecuteMyTypeMethod() }; 请注意,您显示的不是匿名类型,如下所示: va

我知道我们可以使用这种语法

var r = new MyType { name = "dd"}
有没有可能以更简单的方式使用这种语法

MyType myType = GetMyType("some method returns instance of mytype"){
       name="myname", 
       otherProp = otherPro, 
       ExecuteMyTypeMethod()
    };

请注意,您显示的不是匿名类型,如下所示:

var r = new { name = "dd" }; // Note the lack of a type name
这是对象初始值设定项语法-不,它只适用于构造函数。我偶尔也会觉得疼痛,但事实就是这样

编辑:建议使用扩展方法的注释。您可以这样做:


这样做的唯一好处是,您仍然可以在单个Expersion中执行初始化。通常我更喜欢使用单独的语句。

有没有使用扩展方法来实现这种语法的方法?谢谢jon,somewat close,除了extra With。当我需要重置或重新分配某些属性并执行时,我倾向于使用此选项。我可以在多个语句中执行,但附件对我来说总是很有趣。这种差异会带来一些性能开销吗?@hungryMind:性能差异不太可能很大。滥用它并以无法读取的代码结束的可能性更为严重,IMO:)没错,我会注意到:)您可以将此方法添加到您的moreLINQ项目中
public static T With<T>(this T item, Action<T> action) where T : class
{
    action(item);
    return item;
}
MyType myType = GetMyType("some method returns instance of mytype").With(t => {
   t.name="myname";
   t.otherProp = otherPro;
   t.ExecuteMyTypeMethod();
});