【问题标题】:Reflection does not reflect method in interface in C#反射不反映 C# 接口中的方法
【发布时间】:2012-10-07 00:17:30
【问题描述】:

我无法弄清楚这段代码是怎么回事。 "command" = Park,接口中存在 Park 方法。然而,“方法”只是等于 null,所以当我点击调用时它会引发异常。调试器启动,因此我能够确保一切正常。为什么方法没有设置?

范围对象已定义。它是一个 com 对象。我扩展了范围对象的动态视图,它显示的只是属性或其他东西(蓝色 3d 框,不是手和纸),没有方法。那是问题吗?但是为什么,因为我指的是 ITelescope 并且在我尝试调用未设置的方法之前不对范围做任何事情。

我从this question 获得了激活码。

ITelescope scope = (ITelescope)Activator.CreateInstance(Type.GetTypeFromProgID(scopeProgID));
var method = typeof(ITelescope).GetMethod(command);
method.Invoke( scope, new object[0]{ } );

【问题讨论】:

  • 如果在ITelescope 接口中定义了名为"Park" 的方法,您的代码应该会找到它。请注意,名称区分大小写,并确保名称周围没有前导或尾随空格。

标签: c#-4.0 dynamic system.reflection


【解决方案1】:

我记得我曾向another question 询问过接口和反射。该问题与互操作类型有关。要修复它,请右键单击项目引用列表中的违规引用,单击属性,然后将“嵌入互操作类型”设置为 false。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    • 2015-10-21
    • 1970-01-01
    相关资源
    最近更新 更多