用于在类之间引发通知的事件处理程序始终为null

时间:2013-12-02 18:07:56

标签: c# .net events

在服务类中我有一个方法,最后我想引发一个可以被其他两个服务监听的事件。

这就是我试图这样做的方式。但我的问题是处理程序的空检查始终为真。

在IProfileService文件中,我定义了委托和实际的接口

public delegate void PersonDetailsUpdated(Person person, bool personDetailsWereUpdated);

public interface IProfileService
{
    void UpdateContactDetails(Person person);
    event PersonDetailsUpdated PersonDetailsUpdatedEvent;
}

这是该界面的实例

public class ProfileService : IProfileService
{
    // ... Dealing with dependency injection

    public event PersonDetailsUpdated PersonDetailsUpdatedEvent;


    public void UpdateContactDetails(Person person)
    {
        //... Doing stuff

        //We raise an event
        var handler = PersonDetailsUpdatedEvent;
        if (handler != null)
        {
            handler(person, personDetailsWereUpdated);
        }
    }
}

}

现在在另外两个服务中我这样做(我只放了其中一个的代码)

internal class CustomerSmsService : ICustomerSmsService
{
    private readonly IPersonDAL _personDal;
    // ... Other dependencies...

    public CustomerSmsService(IPersonDAL personDal, /* ... the other dependencies */            IProfileService profileService)
    {
        _personDal = personDal;

        //... Again the other dependencies

        profileService.PersonDetailsUpdatedEvent += (SendPhoneValidationCode);
    }

    //... Other methods

    // What I understand is the so called Listener
    public void SendPhoneValidationCode(Person person, bool personDetailsWereUpdated)
    {
        //Stuff
    }
}

也许答案是显而易见的,但以前没有处理过事件,我发现无法找出或找到一个对我来说足够清楚的例子,尽管它们中有很多。但他们似乎采取了另一种方法。

由于

0 个答案:

没有答案