c# .net vsto outlook-addin

c# - ¿Cómo acceder a la propiedad de la aplicación en el complemento de Outlook VSTO fuera de la clase ThisAddIn?



vsto c# (1)

Esta clase de AddDIn creada con el nuevo proyecto de Outlook VSTO C # tiene una propiedad de Application que puede utilizar para, entre otras cosas, acceder a las carpetas y elementos de Outlook. El problema es que puede usarlo fácilmente cuando está dentro de la clase ThisAddIn, pero no hay un acceso fácil a él desde otras clases en el proyecto. Esto es porque es una propiedad de instancia.

Quiero encontrar la mejor manera de tener acceso a la misma funcionalidad que esta propiedad ofrece en mis otras clases, por lo que se me ocurren dos soluciones posibles pero no sé cuál (si alguna) es buena.

Supongamos que quiero obtener la carpeta de la bandeja de entrada predeterminada. Dentro de la clase ThisAddIn, simplemente haría algo como esto:

this.Application.Session.GetDefaultFolder(Outlook.olFolderInbox);

Ahora, ¿cómo hacer lo mismo fuera de esta clase?

1. propiedad estática

Primero, podría agregar una propiedad estática a la clase ThisAddIn y establecerla en el valor que quiero exponer en otras clases.

public partial class ThisAddIn { public Outlook.Application OutlookApp; void ThisAddIn_Startup(object sender, EventArgs e) { // init static variable value here OutlookApp = this.Application // initialize the rest of addin here } void InternalStartup() { this.Startup += this.ThisAddIn_Startup; } }

De esta manera en cualquiera de mis otras clases podría hacer algo como esto:

ThisAddIn.OutlookApp.Session.GetDefaultFolder(Outlook.olFolderInbox);

2. Crear nuevo objeto de aplicación

Lo segundo que podría hacer es iniciar el objeto Aplicación en mi otra clase antes de usarlo. Pero no estoy seguro si crear un nuevo objeto de ese tipo no crea una nueva instancia de Outlook.

class MyOtherClass { public void MyMethod() { var app = new Outlook.Application(); var folder = app.Session.GetDefaultFolder(Outlook.olFolderInbox); } }

Alguien tiene alguna sugerencia sobre cuál es el mejor enfoque, o si tiene diferentes soluciones para este problema, también lo apreciaría.


Ya que puede tener una instancia única de ThisAddIn, puede tener una variable estática para acceder al formulario de la aplicación fuera de ... FYI cuando agregue el proyecto Outlook-AddIn VSTO, la instancia de ThisAddIn estará disponible como miembro estático en Globos de clase estática