Ste*_*ger 6 c# lambda extension-methods
我有一些扩展方法,可以像这样使用:
MyType myObject;
string displayName = myObject.GetDisplayName(x => x.Property);
Run Code Online (Sandbox Code Playgroud)
这里的问题是它需要一个实例,即使扩展方法只需要类型MyType.因此,如果没有实例,则需要像这样调用:
string displayName = BlahBlahUtility.GetDisplayName((MyTpe x) => x.Property);
Run Code Online (Sandbox Code Playgroud)
哪个不再那么好了.
有没有办法为这种情况编写更好的语法?
我真正想做的是这(伪语言):
string displayName = MyType.Property.GetDisplayName()
Run Code Online (Sandbox Code Playgroud)
这当然不适用于C#.
但是这样的事情呢:
string displayName = ((MyType x) => x.Property).GetDisplayName();
Run Code Online (Sandbox Code Playgroud)
这也是不可能的(在lambda之后,不接受点).
有任何想法吗?
编辑:
我的"最喜欢的语法" MyType.Property.GetDisplayName()似乎有误导性.我这里不讨论静态属性.我知道这种语法是不可能的.我只是试图用伪语言表示,需要哪些信息.这将是理想的,每一个额外的东西只是语法开销.任何与此接近的工作语法都会很棒.
我不想写一定的扩展方法.我想要一个简单,可读和编译时安全的语法,使用任何语言功能.