IDLライブラリで定義されたインターフェイスを実装するC#で記述された基本クラスがあります。このクラスの単一インスタンスを管理するC++クラスがあります。このクラスを利用する必要のあるC#プロジェクトもあります[インスタンス(C ++プロジェクトから取得)]。基本クラスが実装するCOMインターフェイスをC#基本クラスにキャストし直したいと思います。
ただし、C ++プロポーションから取得した汎用オブジェクトをC#基本クラスにキャストすると、エラーが発生しました。派生インターフェースにキャストしても問題ありません。
以下は私の問題の同様の例です。CSDriverのNETBaseInstance関数で2つのifスコープが評価されることはありません。NETBaseは、COMInterfaceを実装する唯一のクラスです。したがって、COMInterfaceのifスコープが評価されるため、値がNETBaseであることは確かです。
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#オブジェクトに正常にキャストするプロセスは何ですか?私は何か間違ったことをしていますか?
よろしくお願いします。