2008-10-15 18 views

回答

12

你可以找到關於它的大量信息here

簡而言之,PIA是一個簽名的互操作程序集,它從COM庫的發佈者提供COM庫中類型的「官方」定義。

至於好處,張貼的文章概括起來相當不錯:

PIA的是重要的,因爲它們 提供了獨特的身份類型。 PIA 區分官方類型 定義與其他互通 程序集提供的僞造 定義。具有單一類型 身份可確保在共享PIA中定義的 類型的應用程序之間的類型兼容性 。由於 PIA由其發佈者簽署,而 標記爲 PrimaryInteropAssembly屬性,因此 可與其他定義 相同類型的 互操作程序集區分開來。

3

主互操作程序集將把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); 
+5

*任何* Interop程序集都可以做到這一點,而不僅僅是一個PIA – Joe 2008-10-15 14:48:47

1

通過一個例子來簡單的說,如果你想開發一個應用就像任何其它的辦公工具(微軟的Word,Visio中...)的擴展功能,您可以使用PIA在您的項目中使用Office工具的功能。在我的類圖繪圖應用程序中,使用 visio面板創建類圖。