使用linq我可以创建这样的查询
XElement.Elements("...").Select(x=> useX(x));
Run Code Online (Sandbox Code Playgroud)
现在因为x只创建一个包装器Action而useX的参数是XElement,你可以像这样使用它:
XElement.Elements("...").Select(useX);
Run Code Online (Sandbox Code Playgroud)
但是当我有一个具有匹配类型的构造函数的类型,即MyClass(XElement元素)时,我必须使用:
XElement.Elements("...").Select(x=> new MyClass(x));
Run Code Online (Sandbox Code Playgroud)
我的问题:有没有办法以上面的方式缩短对象的构造,但是有一个构造函数?我想象过这样的事情:
XElement.Elements("...").Select(MyClass);
Run Code Online (Sandbox Code Playgroud)
有没有办法以上面的方式缩短对象的构造,但有一个构造函数
简答:不,没有.
更长的"回答"(实际上不是答案,如果你想要的话,更多的解决方法):
您可以添加静态构造方法MyClass:
public class MyClass
{
public MyClass(XElement elem)
{
// your constructor logic
}
public static MyClass Create(XElement elem)
{
return new MyClass(elem);
}
}
Run Code Online (Sandbox Code Playgroud)
并使用它
XElement.Elements("...").Select(MyClass.Create);
Run Code Online (Sandbox Code Playgroud)
但它是否值得它取决于你!(个人意见:这不值得,坚持下去new MyClass(x))