x.Property); 这里-6ren">
gpt4 book ai didi

"members"上的 C# 扩展方法

转载 作者:太空狗 更新时间:2023-10-29 21:52:26 25 4
gpt4 key购买 nike

我有一些可以像这样使用的扩展方法:

MyType myObject; 
string displayName = myObject.GetDisplayName(x => x.Property);

这里的问题是它需要一个实例,即使扩展方法只需要类型MyType。所以如果没有实例,需要这样调用:

string displayName = BlahBlahUtility.GetDisplayName((MyTpe x) => x.Property);

这不再那么好了。

有没有办法为这种情况编写更好的语法?

其实我想做的是这个(伪语言):

string displayName = MyType.Property.GetDisplayName()

这当然不适用于 C#。

但是像这样的事情呢:

string displayName = ((MyType x) => x.Property).GetDisplayName();

这也是不可能的(在 lambda 之后,不接受点)。

有什么想法吗?


编辑:

我的“最喜欢的语法”MyType.Property.GetDisplayName() 似乎具有误导性。我这里不谈静态属性。我知道这种语法是不可能的。我只是试图用伪语言展示哪些信息是必要的。这将是理想的,每一个额外的东西都只是语法开销。任何接近于此的工作语法都会很棒。

我不想写某个扩展方法。我想要一个简单、可读且编译时安全的语法,使用任何语言功能

最佳答案

查看 Lokad Shared Libraries 中的 ExpressReflect 类.认为他们可能会帮助您完成您正在尝试做的事情。在这里阅读更多内容:

关于 "members"上的 C# 扩展方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2071201/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com