2008-10-15 2 views

ответ

12

Вы можете найти много информации об этом here.

В двух словах, PIA представляет собой подписанную сборку interop, которая предоставляет «официальное» определение типов в библиотеке COM от издателя библиотеки COM.

Что касается преимуществ, посланная статья подводит итог довольно хорошо:

PIAs является важным, поскольку они обеспечивают уникальный идентификатор типа. PIA различает официальный тип определений от поддельных определений, предоставленных другими участниками сборок. Наличие идентификатора одного типа обеспечивает совместимость типов между приложениями, которые разделяют типы , определенные в PIA. Поскольку PIA подписывается его издателем и , помеченного атрибут PrimaryInteropAssembly, он можно отличить от других сборок взаимодействия, которые определяют одинаковых типов.

3

Первичная сборка interop будет переносить 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

Просто говоря через пример, если вы хотите разработать приложение, напоминающее, как и любые другие офисные инструменты (MS Word, Visio ...) с расширенными функциональными возможностями, вы можете использовать функциональность офисных инструментов в своем проекте с использованием PIA. В моем приложении рисования диаграммы классов используйте панель visio для создания диаграммы классов.