首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从属性getter或setter方法创建委托

从属性getter或setter方法创建委托
EN

Stack Overflow用户
提问于 2010-04-12 19:04:28
回答 2查看 13.8K关注 0票数 24

若要从方法创建委托,可以使用编译类型安全语法:

代码语言:javascript
运行
复制
private int Method() { ... }

// and create the delegate to Method...
Func<int> d = Method;

属性是getter和setter方法的包装器,我想创建一个属性getter方法的委托。就像这样

代码语言:javascript
运行
复制
public int Prop { get; set; }

Func<int> d = Prop;
// or...
Func<int> d = Prop_get;

不幸的是,这不起作用。我必须创建一个单独的lambda方法,当getter方法与委托签名匹配时,这似乎没有必要:

代码语言:javascript
运行
复制
Func<int> d = () => Prop;

为了直接使用委托方法,我必须使用讨厌的反射,这不是编译类型安全的:

代码语言:javascript
运行
复制
// something like this, not tested...
MethodInfo m = GetType().GetProperty("Prop").GetGetMethod();
Func<int> d = (Func<int>)Delegate.CreateDelegate(typeof(Func<int>), m);

有没有办法以编译安全的方式直接在属性获取方法上创建委托,类似于在顶部的普通方法上创建委托,而不需要使用中间的lambda方法?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2621488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档