匿名类型语法

时间:2011-02-15 09:45:58

标签: 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()
    };

1 个答案:

答案 0 :(得分:2)

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

var r = new { name = "dd" }; // Note the lack of a type name

这是对象初始值设定项语法 - 不,它只适用于构造函数。我偶尔会发现疼痛,但就是这样。

编辑:评论建议使用扩展方法。你可以这样做:

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();
});

唯一的好处是你仍然可以在一次执行中执行初始化。通常我更喜欢使用单独的陈述。