我有一个用 C# 编写的基类,它实现了在 IDL 库中定义的接口。我有一个管理此类的单个实例的 C++ 类。我还有一个 C# 项目需要使用这个类[实例(通过 C++ 项目获得)]。我想将我的基类实现的 COM 接口转换回我的 C# 基类。
但是,当我将从 C++ 比例获取的通用对象转换为我的 C# 基类时,我收到了一个错误。当我将它转换为派生接口时,没有问题。
下面是我的问题的类似示例。这两个 if 范围永远不会在 CSDriver 的 NETBaseInstance 函数中进行评估。NETBase 是唯一实现 COMInterface 的类。因此,我确定该值是 NETBase,因为 COMInterface 的 if 范围已被评估。
public class NETBase : COMInterface{ ... }
public class CSDriver{
private NETBase m_NETBaseInstance;
...
public object NETBaseInstance{
set{
COMInterface test;
if( value is COMInterface ){
// This is evaluated.
test = value as COMInterface;
}
if( value is NETBase ){
// This is not evaluated.
m_NETBaseInstance = value as NETBase;
}
if( test is NETBase ){
// This is not evaluated.
m_NETBaseInstance = test as NETBase;
}
}
}
}
成功将此 COM 对象转换为 C# 对象的过程是什么?难道我做错了什么?
提前感谢您的任何回答。