Events C#未注册

Events C#未注册,events,com,interface,smtp,windows-server-2003,Events,Com,Interface,Smtp,Windows Server 2003,我正在为运行Windows2003服务器的人工作。他们想让我制作一个SMTP接收器,它可以对我们要发送消息的数据库和表进行分类。他们在此服务器上没有exchange,只有默认的虚拟SMTP服务器 我已经创建了一个类,我认为应该在SMTP服务器onarrival事件发生时启动该类。我在注册我的类时遇到了一个问题,但是,当我运行RegAsm/regfile时,我得到一个“警告,RA0000:不会发生注册,没有要注册的类型”。如果我使用/TLB运行RegAsm,它会告诉我类型已注册,但按类不会显示在全

我正在为运行Windows2003服务器的人工作。他们想让我制作一个SMTP接收器,它可以对我们要发送消息的数据库和表进行分类。他们在此服务器上没有exchange,只有默认的虚拟SMTP服务器

我已经创建了一个类,我认为应该在SMTP服务器onarrival事件发生时启动该类。我在注册我的类时遇到了一个问题,但是,当我运行RegAsm/regfile时,我得到一个“警告,RA0000:不会发生注册,没有要注册的类型”。如果我使用/TLB运行RegAsm,它会告诉我类型已注册,但按类不会显示在全局注册表中,邮件发送到服务器时不会调用我的类。我有点不知道我做错了什么

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;


namespace SMTPSink
{
    [Guid("????-????-?????-????")]
    [ComVisible(true)]
    [ProgId("SMTPSINK")]
    public class SMTPSink : CDO.ISMTPOnArrival
    {
        SMTPSink()
        { }

        void CDO.ISMTPOnArrival.OnArrival(CDO.Message Message, ref CDO.CdoEventStatus EStatus)
        {
            //Simple test to see if this fires on mail arrival
        }
    }
}

您忘记将构造函数公开。导出不具有[noncreatable]类型库属性的coclass所需。修正:

    public SMTPSink()
    { }

或者,如果它没有任何用处,就把它省略掉。

这很有效,我真的不明白为什么。非常感谢你。