Eventos no Outlook PIA
Ao navegar no Assembly de interoperabilidade primária (PIA) do Outlook, você notará que muitas interfaces e representantes de eventos têm nomes familiares de objetos e eventos no modelo de objeto do Outlook. Ao contrário dos eventos na biblioteca do tipo COM, os eventos no Outlook PIA não são definidos na mesma interface como nos métodos e propriedades do mesmo objeto. Interfaces, representantes e classes sink helper relacionados a eventos são importados ou criados para oferecer suporte a eventos no Outlook PIA. Este tópico descreve essas interfaces, representantes e classes sink helper relacionados a eventos.
De onde vêm as interfaces, representantes e classes Sink Helper de eventos
Para criar o Outlook PIA, o Outlook usa o Importador de bibliotecas de tipos (TLBIMP) no .NET Framework para converter definições de tipos da biblioteca de tipos COM em definições equivalentes em um assembly de tempo de execução em linguagem comum (CLR). O TLBIMP importa estes dois tipos de interfaces para cada objeto:
A interface primária (por exemplo, a interface _Application )
A interface do evento (por exemplo, a interface ApplicationEvents_11 )
O TLBIMP processa as interfaces importadas e cria diversos representantes, interfaces e classes, incluindo a interface do .NET (por exemplo, a interface Application). Se o objeto tiver eventos, é criado o seguinte:
A interface do evento .NET (por exemplo, a interface do ApplicationEvents_11_Event )
Delegar para cada evento (por exemplo, o delegado ApplicationEvents_11_ItemSendEventHandler )
Classe auxiliar de coletor (por exemplo, classe ApplicationEvents_11_SinkHelper )
Várias versões de eventos
Alguns objetos que existiram para várias versões do Outlook têm diferentes implementações de eventos ao longo das versões, e tiveram mais eventos adicionados à medida que as novas versões foram lançadas. Para oferecer suporte a eventos que variam pelas diversas versões, o Outlook distingue essas interfaces, representantes e classes relacionados a eventos adicionando um número de versão a seus nomes. Por exemplo:
As interfaces de eventos importadas do objeto Application incluem:
A versão mais antiga para Outlook 98 e Outlook 2000: a interface ApplicationEvents
A versão do Outlook 2002: a interface ApplicationEvents_10
A versão do Outlook 2003 e versões posteriores: a interface ApplicationEvents_11
As interfaces de evento .NET criadas por TLBIMP para o objeto Application incluem:
A versão mais antiga do Outlook 98 e do Outlook 2000: a interface ApplicationEvents_Event
A versão do Outlook 2002: a interface ApplicationEvents_10_Event
A versão do Outlook 2003 e versões posteriores: a interface ApplicationEvents_11_Event
Os representantes que o TLBIMP cria para cada evento em cada versão do objeto Application, por exemplo, um representante para cada versão do evento ItemSend:
A versão mais antiga do Outlook 98 e do Outlook 2000: o delegado ApplicationEvents_ItemSendEventHandler
A versão do Outlook 2002: o delegado ApplicationEvents_10_ItemSendEventHandler
A versão para o Outlook 2003 e versões posteriores: o delegado ApplicationEvents_11_ItemSendEventHandler
Logicamente, os eventos adicionados a uma versão posterior não serão exibidos nas interfaces de eventos de versões anteriores e não terão representantes correspondentes nas versões anteriores. Por exemplo, o evento AttachmentSelectionChange foi adicionado ao objeto Explorer no Outlook 2010, portanto, não faz parte das interfaces de eventos anteriores para o objeto Explorer:
Interface ExplorerEvents
ExplorerEvents_Event interface
Por outro lado, você pode encontrar o evento na interface de evento .NET mais recente, ExplorerEvents_10_Event e seu representante para a versão do Outlook 2010, ExplorerEvents_10_AttachmentSelectionChangeEventHandler.
Para que servem as interfaces, representantes e classes do Sink Helper de eventos
Usando o objeto Application como um exemplo, esta seção descreve o que cada interface e classe listada acima contém:
A interface primária, _Application, define todos os métodos e propriedades do Aplicativo. Exceto por uma condição descrita abaixo, normalmente não se usa esta interface em código.
As interfaces de eventos importadas pelo TLBIMP, como ApplicationEvents_11 e ApplicationEvents_10, definem o mapeamento de métodos para eventos de Aplicativo na versão correspondente do Outlook. Não use essa interface com código.
As interfaces de eventos criadas pelo TLBIMP, como ApplicationEvents_11_Event e ApplicationEvents_10_Event, definem todos os eventos do Aplicativo na versão correspondente do Outlook. Ao criar um manipulador de eventos para um evento em uma versão específica, você implementa o manipulador de eventos como um método e conecta o método ao evento definido na versão correspondente da interface de eventos do .NET. Exceto por uma condição descrita abaixo, normalmente não se faz referência a esta interface de eventos em código.
A interface .NET, Application, herda a interface _Application e a interface ApplicationEvents_11_Event. Normalmente, esta é a única interface que se usa em código gerenciado para acessar o objeto, método, propriedade e os membros do evento do objeto Application. Entretanto, há duas exceções em que não se usa a interface do .NET, mas sim interfaces diferentes para se conectar a um evento:
Ao acessar um evento que compartilha o mesmo nome como um método daquele objeto, converta a interface de eventos apropriada para conectar-se ao evento. Por exemplo, para se conectar ao evento Quit , você lança para a interface ApplicationEvents_11_Event.
Ao se conectar a uma versão anterior de um evento que tenha sido estendida em uma versão posterior do Outlook, você deve se conectar à versão do evento na interface anterior. Por exemplo, se você quiser se conectar à versão do evento Quit do objeto Application implementado para o Outlook 2002 em vez da versão mais recente, conecte-se ao evento Quit definido na interface ApplicationEvents_10_Event, em vez do evento Quit definido na interface ApplicationEvents_11_Event.
Representantes fornecem uma estrutura para você criar os manipuladores de eventos personalizados para eventos específicos em uma versão específica do Outlook. Por exemplo, se você quiser adicionar uma marcar para a existência de uma linha de assunto em um item do Outlook pouco antes de enviá-la, implemente o marcar em um método de retorno de chamada que tenha a mesma assinatura que o delegado, ApplicationEvents_11_ItemSendEventHandler. Em seguida, você conecta o método de retorno de chamada como um manipulador de eventos para o evento ItemSend definido na interface ApplicationEvents_11_Event. Para saber mais sobre como conectar o método de retorno de chamada como um manipulador de eventos para um objeto, consulte Conectar a manipuladores de eventos personalizados.
As classes auxiliares do coletor criadas pelo TLBIMP, por exemplo, ApplicationEvents_11_SinkHelper e ApplicationEvents_10_SinkHelper, são objetos auxiliares de eventos para eventos de aplicativo na versão correspondente do Outlook. Não use essas classes no código.