假设我有一个众所周知的接口
我还有这个对象的托管实现(确切地说是
最后,我有一个接受该接口对象的外部方法:
IWellKnownInterface
,它是已知的COM-visible
并已注册。我还有这个对象的托管实现(确切地说是
C#
):public class MyWellKnownClass : IWellKnownInterface { ... }
最后,我有一个接受该接口对象的外部方法:
extern
。[Whatever]
private static extern void ExternMethod(IWellKnownInterface veryWellKnown);
问题1:
我想了解下面代码在CLR
角度下发生了什么:
IWellKnownInterface a = new MyWellKnownClass();
ExternMethod(a);
我知道,如果我们谈论从托管代码调用非托管COM对象,那么关键在于构建适当的运行时可调用包装
并通过它委派调用以进行适当的参数转换。然而,我找不到任何有关情况的信息,当我们有一个托管COM对象并且它被用于非托管代码时。
问题2:
dynamic
类型如何影响CLR
在相同情况下的行为?它是否会改变内部托管到非托管互操作逻辑?也许为MyWellKnownClass
实例添加一些附加的包装器?
dynamic a = new MyWellKnownClass();
ExternMethod(a);