C#动态索引器

时间:2010-09-07 13:39:13

标签: c#

有人知道是否可以使用动态lang功能通过索引器调用CLR对象上的方法?例如,我可以在javascript中轻松完成myClrObj["SuperMethod"] ()

提前谢谢。

2 个答案:

答案 0 :(得分:1)

可能有更好的方法,但我知道如何做的一种方法是:

  • 创建一个继承自DynamicObject
  • 的类
  • 覆盖合适的方法以通过索引器
  • 捕获访问权限
  • 构造并缓存与通过提供的索引器参数
  • 找到的方法对应的委托
  • 提供一个扩展方法,使您的对象看起来是动态的,并实例化正确的DynamicObject特化。

    dynamic obj = myObj.AsIndexedObj(); obj["Do"]();

答案 1 :(得分:0)

您可以使用nuget提供的开源Dynamitey,它包装了DLR API,使其更容易按名称动态调用方法,适用于动态和poco对象。比poco对象的反射更快。

Dynamic.InvokeMember(myClrObj,"SuperMethod")