2 回答

TA貢獻1946條經(jīng)驗 獲得超4個贊
您發(fā)送給 MediatR 的命令類型為IdentifiedCommand<CreateMessageCommand, bool>
。因此 MediatR 將尋找類型為 的處理程序IRequestHandler<IdentifiedCommand<CreateMessageCommand, bool>, bool>>
。
DI 容器通常會首先尋找完全匹配的對象,然后考慮開放的泛型類型注冊。在這種情況下,它將查找IRequestHandler<,>
注冊,并為其插入類型參數(shù)IdentifiedCommand<CreateMessageCommand, bool>
、 和bool
。但是,您的命令處理程序沒有實現(xiàn)IRequestHandler<T, R>
,而是實現(xiàn)了IRequestHandler<IdentifiedCommand<T, R>, R>
不適合于此的。因此 DI 容器沒有找到處理程序并且會引發(fā)該錯誤。
為了使其工作,您必須以 DI 容器查找它的方式實現(xiàn)該類型。所以你將不得不實施IRequestHandler<T, R>
。
不幸的是,這也意味著您無法使用類型安全的方式IdentifiedCommand<T, R>
在處理程序中接受。相反,您只會收到一個T
您必須處理的請求。

TA貢獻1804條經(jīng)驗 獲得超3個贊
添加這個解決了我的問題。
builder.RegisterType(typeof(IdentifiedCommandHandler<CreateMessageCommand, bool>))
.As<IRequestHandler<IdentifiedCommand<CreateMessageCommand, bool>, bool>>()
.AsImplementedInterfaces();
- 2 回答
- 0 關(guān)注
- 495 瀏覽
添加回答
舉報