Нет перегрузки для '<method>' соответствует делегату '<delegate>' - PullRequest
0 голосов
/ 07 января 2011

Моя сборка «Безопасность» включает этот код:

    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 Ответ

3 голосов
/ 07 января 2011

У вас есть другой тип с именем InteropEventType, объявленный где-то? Это сделало бы первый параметр Security_InteropEvent отличным от первого параметра InteropEventDelegate.

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

...