C# コンパイラでの COM 型検出
C# コンパイラには、インターフェイスのインスタンス化や非 ref パラメータを ref パラメータとして扱うことを許可するなど、COM 型の特別な処理があります。この動作は、特定のプロパティとテクニックを適用した結果発生します。
インターフェイス インスタンスの作成動作をシミュレートするには、CoClass 属性の使用を検討してください。 [CoClass] 属性をインターフェイスに適用すると、そのインターフェイスをそのインターフェイスを実装する具象クラスに関連付けます:
<code>[CoClass(typeof(MyClass))] public interface IMyInterface { }</code>
これにより、次のように IMyInterface をインスタンス化できるようになります:
<code>IMyInterface instance = new MyClass();</code>
あるいは、Type.GetTypeFromCLSID() メソッドと Activator.CreateInstance() メソッドを使用して、それぞれ型を取得し、インスタンスを作成することもできます。
ref パラメーターの処理に関して、非 ref パラメーターが指定された場合、C# コンパイラーは参照渡しするローカル変数を追加します。これを説明するには、次のコードを考えてみましょう:
<code>// Filename 参数实际上是一个 ref 参数 app.ActiveDocument.SaveAs(Filename: "test.doc");</code>
この場合、コンパイラーによって生成されたコードは、Filename パラメーターを保持するローカル変数を作成し、この変数を ref パラメーターとして SaveAs メソッドに渡します。
CoClass 属性と ref パラメーターを処理するコンパイラーの機能を活用することで、開発者は C# コードで COM 型を効率的に操作できます。
以上がC# コンパイラは COM 型のインスタンス化と Ref パラメータをどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。