在服务类中我有一个方法,最后我想引发一个可以被其他两个服务监听的事件。
这就是我试图这样做的方式。但我的问题是处理程序的空检查始终为真。
在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
}
}
也许答案是显而易见的,但以前没有处理过事件,我发现无法找出或找到一个对我来说足够清楚的例子,尽管它们中有很多。但他们似乎采取了另一种方法。
由于