C# Netoffice-Outlook加载项-访问文件夹事件

C# Netoffice-Outlook加载项-访问文件夹事件,c#,outlook,netoffice,C#,Outlook,Netoffice,我有一个Microsoft Office Outlook的VBA项目,我想在NetOffice的帮助下将其重写为Outlook加载项 下面是我想传输的一段VBA代码: Dim objNS As Outlook.NameSpace Set objNS = Application.GetNamespace("MAPI") Set m_colCalendarItems = objNS.GetDefaultFolder(olFolderCalendar).Items 应用程序表示正在运行的Outloo

我有一个Microsoft Office Outlook的VBA项目,我想在NetOffice的帮助下将其重写为Outlook加载项

下面是我想传输的一段VBA代码:

Dim objNS As Outlook.NameSpace
Set objNS = Application.GetNamespace("MAPI")
Set m_colCalendarItems = objNS.GetDefaultFolder(olFolderCalendar).Items
应用程序
表示正在运行的Outlook应用程序

我在NetOffice中的相应代码如下所示:

Outlook.Application objApp = Outlook.Application.GetActiveInstance();
Outlook._NameSpace objNS = (Outlook._NameSpace)objApp.GetNamespace("MAPI");
m_colCalendarItems = (Outlook.Items)objNS.GetDefaultFolder(OlDefaultFolders.olFolderCalendar).Items;
相当多的石膏,当然这可以处理得更好。但主要的问题是,我没有在第一行中获得对正在运行的应用程序的引用(
objApp
为null)。尽管此代码在
加载项启动完成程序中


有没有关于如何更好地设置的提示?

我找到了解决方案。postet中的代码段正在类方法中运行。它是从
Addin
类(由NetOffice开发人员工具箱自动生成)中的
Addin\u OnStartupComplete
调用的。 我可以获得对正在运行的应用程序的引用:它是
Addin
类的
application
属性。我可以向被调用的方法提供:

public class Addin : Outlook.Tools.COMAddin // this was auto-generated by the NetOffice Developer Toolbox
{
    FolderEvents m_folderevents = new FolderEvents(); // 'FolderEvents' is my class

    // additional auto-generated code removed

    private void Addin_OnStartupComplete(ref Array custom)
    {
        m_folderevents.InitFolders(this.Application);
    }
}