誰かが.Netでプライマリ相互運用機能アセンブリを使用する利点を説明できますか?
-
03-07-2019 - |
質問
この概念は私にとって新しいものであり、同僚が提案しました。悲しいことに、私は彼が何について話しているのか分かりませんでした。誰かが私を啓発できますか?
解決
こちらで、多くの情報を見つけることができます。
一言で言えば、PIAは「公式」を提供する署名済み相互運用アセンブリです。 COMライブラリの発行者からのCOMライブラリの型の定義。
利点については、投稿された記事はかなり良いことを要約しています:
PIAは重要です 一意のタイプIDを提供します。 PIA 公式タイプを区別します 偽造品からの定義 他の相互運用機能によって提供される定義 アセンブリ。単一のタイプを持つ アイデンティティは型の互換性を保証します 共有するアプリケーション間 PIAで定義されているタイプ。なぜなら PIAはその発行者によって署名され、 でラベル付け PrimaryInteropAssembly属性、それ 他と区別できる 定義する相互運用機能アセンブリ 同じタイプ。
他のヒント
プライマリ相互運用機能アセンブリは、COMインターフェイスを.NET互換型にラップします。メソッドを手動で呼び出す場合のような細かな制御はできませんが、十分に近いものです。
PIAなし:
object _comObject;
Type _comObjectType;
_comObjectType = Type.GetTypeFromProgID("MyCompany.MyApplication.MyObject", true);
_comObject = Activator.CreateInstance(_comObjectType);
string name = (string)_comObjectType.InvokeMember("GetCustomerName", BindingFlags.InvokeMethod, null, _comObject, , new object [] { _customerId });
PIAを使用:
MyCompany.MyApplication.MyObject obj = new MyObject();
string name = obj.GetCustomerName(_customerId);
例を通して簡単に言うと、拡張機能を備えた他のオフィスツール(MS word、visio ...)に似たアプリケーションを開発する場合、PIAを使用してプロジェクトでオフィスツールの機能を使用できます。クラス図描画アプリ、使用 クラス図作成用のvisioパネル。
所属していません StackOverflow