使用新 Outlook VSTO C# 项目创建的这个AddIn 类具有一个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. 创建新的应用程序对象
我可以做的第二件事是在我使用它之前在我的其他类中初始化 Application 对象。但我不确定创建该类型的新对象是否不会创建 Outlook 的新实例。
class MyOtherClass
{
public void MyMethod()
{
var app = new Outlook.Application();
var folder = app.Session.GetDefaultFolder(Outlook.olFolderInbox);
}
}
有没有人有任何建议哪种方法更好,如果你对这个问题有不同的解决方案,我也会很高兴。