【问题标题】:Where does IDispatchEx exists?IDispatchEx 存在于哪里?
【发布时间】:2009-03-15 09:29:21
【问题描述】:

找不到包含 IDispatchEx 接口的库。我想实现这个接口,但是找不到。 有谁知道它在哪里?

谢谢, 保罗。

【问题讨论】:

    标签: c# interop


    【解决方案1】:

    如果您想编写一个实现IDispatchEx 接口的托管类,您首先需要定义该接口,因为它在.NET 中不存在。这是其定义的link。恕我直言,实现此接口并非易事。

    【讨论】:

    • 我最近在寻找 C# 的 IDispatchEx 互操作定义和包装器,但找不到任何东西,这个答案中的链接似乎已经消失了。所以我不得不从头开始创建它,here it is 以防有人需要它。
    【解决方案2】:

    你到底想做什么?这是在 C# 中使用的吗?还是来自外部 (COM)?

    如果您只是想要浏览器支持,那么也许在WebBrowser 中托管并设置ObjectForScripting

    您可以排序在 C# 3.0 中使用扩展方法向类型添加方法:

    public static void Bar(this Foo foo, int someArg) {...}
    ....
    Foo foo = ...
    foo.Bar(123);
    

    但这仍然是静态类型的。 C# 4.0 为 CLR/DLR 中的真正动态对象引入了 dynamic,但您需要实现 IDynamicObject。这不是微不足道的。

    【讨论】:

    • 谢谢!但是我想在我的 C# 类中模拟不存在的属性(或方法),当它从 javascript 调用时。例如, var o=new ActiveXObject('object'); o.Foo("嗨");请注意,我的 C# 类中不存在 Foo 方法。所以我想通过 IExpando.AddMethod 来实现我的目标。
    • 但是使用 IExpando.AddMethod 我有一些麻烦 - 当调用不存在的方法时它不会调用。但是当调用不存在的字段时它运行良好(我的意思是 IExpando.AddField 被解雇)。所以我想不出区别,想试试IDispatchEx接口。
    猜你喜欢
    • 2017-08-23
    • 2011-09-06
    • 1970-01-01
    • 1970-01-01
    • 2015-01-30
    • 1970-01-01
    • 2011-08-14
    • 2023-04-03
    • 2011-08-28
    相关资源
    最近更新 更多