タイプライブラリを持つVC++ COMコンポーネントがあります。私はC#プロジェクトへの参照を追加するC#アプリケーションと相互運用アセンブリからコンポーネントを消費するためにinteropアセンブリ内の名前の大文字化が正しくありません
[
object,
uuid(ActualUuidHere),
dual,
nonextensible,
oleautomation,
hidden,
helpstring(ActualHelpStringHere)
]
interface IWorkflow : IDispatch
{
//irrelevant properties here
}
[
uuid(ActualClassIdHere),
noncreatable
]
coclass Workflow {
[default] interface IWorkflow;
};
が生成される:このコンポーネントのタイプライブラリは、インターフェイスおよび共クラスを宣言する。私は相互運用が含まれていることを確認のVisual Studio 2003のオブジェクトブラウザで
:public abstract interface IWorkflow;
public abstract interface workflow : IWorkflow;
public class workflowClass : System.Object;
それは、クラスやインタフェースの何らかの理由で名前は大文字と小文字が異なることは明らかです。これは、同じタイプライブラリで宣言された他の20以上のインタフェースでは発生しません。ISomething
はSomething
とSomethingClass
に対応します。
私はプロジェクトの.idlファイルを調べました。識別子Workflow
は他の場所では使用されていません。
この奇妙な動作の理由とその回避方法は何ですか?
プロジェクト内のすべてのIDLファイルを調べました。名前は他の場所では使用されていません。 – sharptooth
ありがとうございます。私はこの問題を抱えていて、あなたの解決策はそれを修正しました。 – Grokys