'<method>'没有重载匹配委托'<delegate>'</delegate> </method>

时间:2011-01-06 23:38:15

标签: c# visual-studio-2010 .net-3.5

我的“安全”程序集包含以下代码:

    public delegate void InteropEventDelegate(InteropEventType etype, string data, string data2, string data3);
    public event InteropEventDelegate InteropEvent;

第二个程序集引用了我的“安全”程序集,并包含以下代码:

    void LoadSecurity()
    {
        if (!AssemblyIsLocked && Security == null)
        {
            this.Security = new Security.Security(UnlockCode);
            this.Security.InteropEvent += new Security.Security.InteropEventDelegate(Security_InteropEvent);
        }
    }

    void Security_InteropEvent(InteropEventType etype, string data, string data2, string data3)
    {
        throw new NotImplementedException();
    }

Security_InteropEvent是由IntelliSense生成的,并且具有正确的签名,但是我收到错误“'Security_InteropEvent'的过载与委托'Security.Security.InteropEventDelegate'匹配”。为什么呢?

1 个答案:

答案 0 :(得分:3)

你在某处宣布了另一种名为InteropEventType的类型吗?这会使Security_InteropEvent的第一个参数与InteropEventDelegate的第一个参数的类型不同。

虽然我提到了名字,但我强烈建议你不要给类型和命名空间赋予相同的名称。 Eric Lippert有一个whole blog series关于此的危险。 (我说的是Security.Security,我最初认为这是一个命名不好的命名空间,直到我看到你在它上面调用构造函数。)