1
我使用統一登記所有我的域名事件處理喜歡這樣:統一解決通用的事件處理程序
public static void RegisterTypes(IUnityContainer container)
{
container.RegisterType<IDomainEventHandler<ProductCreated>, ProductCreatedHandler>(new PerRequestLifetimeManager());
}
我的處理程序是這樣的:
public class ProductCreatedHandler : IDomainEventHandler<ProductCreated>
{
public void Handle(ProductCreated domainEvent)
{
// Handle the event
}
}
我的域事件是這樣的:
public class ProductCreated : IDomainEvent
{
private Product product;
public ProductCreated(Product product)
{
this.product = product;
}
}
而且我提出用此事件:
var product = new Product()
{
ProductGuid = Guid.NewGuid().ToString(),
ProductCode = productCode,
ProductName = productName,
};
DomainEvents.Raise<ProductCreated>(new ProductCreated(product));
我處理與下面的代碼引發的事件:
public static void Raise<T>(T args) where T : IDomainEvent
{
if (Container != null)
{
foreach (var handler in Container.ResolveAll<IDomainEventHandler<T>>())
{
handler.Handle(args);
}
}
}
使用檢查,T
是ProductCreated
類型,但Container.ResolveAll<IDomainEventHandler<T>>()
不解決任何問題,即使通過檢查,我可以看到Container
做註冊到此註冊類型IDomainEventHandler
,映射類型爲ProductCreatedHandler
爲什麼容器沒有解析我在開始時註冊的泛型?