這個概念對我來說是新的,一位同事建議。可悲的是,我不知道他在說什麼。有人能夠啓發我嗎?有人可以解釋在.Net中使用Primary Interop Assembly的好處嗎?
8
A
回答
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);
1
通過一個例子來簡單的說,如果你想開發一個應用就像任何其它的辦公工具(微軟的Word,Visio中...)的擴展功能,您可以使用PIA在您的項目中使用Office工具的功能。在我的類圖繪圖應用程序中,使用 visio面板創建類圖。
相關問題
- 1. 有人可以解釋多態性的好處嗎?
- 2. 有人可以解釋嗎?
- 3. 有人可以解釋iOS4的CMTime嗎?
- 4. 有人可以解釋在iOS中使用initWithNibName給我嗎?
- 5. 在iphone編程中使用標籤 - 有人可以解釋嗎?
- 6. 有人可以解釋C#中接口的確切使用嗎?
- 7. 有人可以解釋respond_to嗎? :每?
- 8. 有人可以解釋參數autovacuum_naptime嗎?
- 9. 有人可以解釋行結束嗎?
- 10. 有人可以解釋ContactsContracts嗎?
- 11. 有人可以解釋iFrames嗎?
- 12. 有人可以解釋WebKit嗎?
- 13. 有人可以解釋這一點嗎?
- 14. 有人可以解釋descendantFocusability = afterDescendants嗎?
- 15. 有人可以解釋一下嗎?
- 16. 有人可以解釋Spring Security BasePermission.Create嗎?
- 17. 有人可以解釋facelets嗎?
- 18. 有人可以解釋錯誤嗎?
- 19. 有人可以解釋ja_JP.UTF8嗎?
- 20. 有人可以解釋DBCC DROPCLEANBUFFERS嗎?
- 21. 有人可以爲我解釋COMTIMEOUTS嗎?
- 22. 有人可以解釋這個宏嗎?
- 23. 有人可以解釋C#CngKey.Create嗎?
- 24. 有人可以請解釋WaitForSeconds()嗎?
- 25. 有人可以解釋MustOverride嗎?
- 26. 有人可以解釋__declspec(裸體)嗎?
- 27. 有人可以向我解釋runQueryOnBackgroundThread嗎?
- 28. 有人可以解釋jQuery.sap.setObject?
- 29. 有人可以解釋使用SBT的正確方法嗎?
- 30. 有人可以解釋這個圖像處理算法嗎?
*任何* Interop程序集都可以做到這一點,而不僅僅是一個PIA – Joe 2008-10-15 14:48:47