2016-02-29 69 views
1

接口IHandleMessages具有逆變參數TMessage IHandleMessages<in TMessage>SimpleRetryStrategy失敗<TMessage>

這使得可能在IOC容器IHandleMessages<DerivedType>註冊和在處理程序實現:IHandleMessages<BaseType>。那沒問題。

問題在於Failed<TMessage>包裝失敗的消息,其中TMessage不是逆變。這使得不可能有 執行處理程序像Handler : IHandleMessages<Failed<Base>>

和登記在IOC容器.As<IHandleMessages<Failed<DerivedType>>>()

我認爲其合理有Failed<in TMessage>但不Failed<TMessage>

你覺得呢?

回答

0

當我在Rebus中實現二級重試機制時,我沒有考慮這種情況,但是我想支持它。

我已將該功能添加到0.99.36(如果測試通過且其他一切看起來不錯,它將在幾天內在NuGet上)。

它看起來與你所提出的略有不同,因爲只有接口才能產生同向和反向差異。

因此,Rebus現在發送IFailed<out TMessage>,因爲這樣您就可以實現例如IHandleMessages<IFailed<AbstractBaseClass>>當失敗的消息是DerivedFromAbstractBaseClass

繼續NuGet.org的眼睛 - 這將是出在幾天之內:)

在此期間,你可以看到代碼的樣子in the accompanying test

相關問題