Эта концепция для меня новая, и ее предложил коллега. К сожалению, я понятия не имел, о чем он говорит. Может кто-нибудь просветить меня?Может кто-нибудь объяснить преимущества использования первичной сборки Interop в .Net?
ответ
Вы можете найти много информации об этом here.
В двух словах, PIA представляет собой подписанную сборку interop, которая предоставляет «официальное» определение типов в библиотеке COM от издателя библиотеки COM.
Что касается преимуществ, посланная статья подводит итог довольно хорошо:
PIAs является важным, поскольку они обеспечивают уникальный идентификатор типа. PIA различает официальный тип определений от поддельных определений, предоставленных другими участниками сборок. Наличие идентификатора одного типа обеспечивает совместимость типов между приложениями, которые разделяют типы , определенные в PIA. Поскольку PIA подписывается его издателем и , помеченного атрибут PrimaryInteropAssembly, он можно отличить от других сборок взаимодействия, которые определяют одинаковых типов.
Первичная сборка 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);
Просто говоря через пример, если вы хотите разработать приложение, напоминающее, как и любые другие офисные инструменты (MS Word, Visio ...) с расширенными функциональными возможностями, вы можете использовать функциональность офисных инструментов в своем проекте с использованием PIA. В моем приложении рисования диаграммы классов используйте панель visio для создания диаграммы классов.
* Любая * сборка Interop сделает это, а не только PIA – Joe 2008-10-15 14:48:47