Как получить доступ к Свойству приложения в дополнении Outlook VSTO за пределами класса ThisAddIn?

Класс ThisAddIn, созданный с новым Outlook проект VSTO C#, имеет a Application свойство, которое можно использовать, чтобы среди прочего получить доступ к Папкам Outlook и объектам. Проблема состоит в том, что можно легко использовать его, когда Вы в классе ThisAddIn, но нет никакого легкого доступа к нему от других классов в проекте. Это вызвано тем, что это - свойство экземпляра.

Я хочу найти лучший способ наличия доступа к той же функциональности, которую это свойство обеспечивает в моих других классах, таким образом, я предлагаю два возможных решения, но я не знаю, какой (если таковые имеются) их хорош.

Позволяет предполагают, что я хочу получить папку ящика входящих сообщений по умолчанию. В классе ThisAddIn я просто сделал бы что-то вроде этого:

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

Теперь, как сделать ту же внешнюю сторону этот класс?

1. Статическое свойство

Во-первых, я мог добавить статическое свойство к ThisAddIn класс и набор это к значению я хочу представить в других классах.

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;
    }
}

Этот путь в любом из моих других классов я мог сделать что-то вроде этого:

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

2. Создайте новый Объект приложения

Вторая вещь, которую я мог сделать, к init Объекту приложения в моем другом классе, прежде чем я буду использовать его. Но я не уверен, если создание нового объекта того типа не создает новый экземпляр Outlook.

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

Делает у любого есть любые предложения, какой подход лучше, того, если у Вас есть различные решения для этой проблемы, я был бы apprieciate это также.

17
задан RaYell 1 February 2010 в 09:53
поделиться

1 ответ

Поскольку у вас может быть единственный экземпляр ThisAddIn, у вас может быть статическая переменная для доступа к форме приложения извне. .. К вашему сведению, когда вы добавляете проект Outlook-AddIn VSTO, экземпляр ThisAddIn будет доступен как статический член в статическом классе Globals

18
ответ дан 30 November 2019 в 14:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: