Alguém pode explicar os benefícios de usar um assembly de interoperabilidade primário na Net?
-
03-07-2019 - |
Pergunta
Este conceito é novo para mim, e um colega sugeriu. Infelizmente, eu não tinha ideia do que ele estava falando. Alguém pode me esclarecer?
Solução
Você pode encontrar muitas informações sobre ele aqui .
Em poucas palavras, um PIA é um assinado interoperabilidade montagem que fornece a definição "oficial" de tipos em uma biblioteca COM da editora da biblioteca COM.
Quanto aos benefícios, o artigo somas postou-se muito bem:
PIAs são importantes porque fornecer identidade único tipo. o PIA distingue o tipo de oficial definições de falsificação definições fornecidas por outros interoperabilidade montagens. Ter um único tipo identidade garante a compatibilidade tipo entre as aplicações que a quota tipos definidos na PIA. Porque o PIA é assinado por seu editor e marcado com o atributo PrimaryInteropAssembly, ele pode ser diferenciada da outra módulos de interoperabilidade que definem o mesmos tipos.
Outras dicas
A interoperabilidade primária montagem vai envolver as interfaces COM em tipos compatíveis .NET. Ele não lhe dá o controle granular que chamando manualmente os métodos não, mas é perto o suficiente.
Sem um 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 });
Com um PIA:
MyCompany.MyApplication.MyObject obj = new MyObject();
string name = obj.GetCustomerName(_customerId);
Basta dizer através de um exemplo, se você quiser desenvolver um assemelha aplicação, como quaisquer outras ferramentas de escritório (MS Word, visio ...) com funcionalidade estendida, você pode usar a funcionalidade de ferramentas de escritório em seu projeto usando PIA.In meu diagrama de classe de desenho aplicativo, uso painel visio para criação de diagrama de classe.