MassTransit
中的消費者接口都期望消息模型是類而不是結構。因爲都是內部接口(非常漂亮的設計,在那裏我必須說),這是一般的容器類顯示約束,直接from the source code採取:爲什麼在MassTransit消息傳遞中不允許使用結構體?
/// <summary>
/// Declares a Consume method for the message type TMessage which is called
/// whenever a a message is received of the specified type.
/// </summary>
public static class Consumes<TMessage> where TMessage : class
這不是隨着技術的發展開始了人的問題,但對我們來說卻是一件麻煩事,因爲在考慮使用服務總線框架之前,我們已經在代碼庫中擁有與命令模式相關的對象,所以我們必須更改一堆接口和泛型類來添加該約束爲他們與MT合作。
雖然我們很幸運沒有任何struct
類型,因爲這可能會導致更多(可能是不需要的)更改。
爲什麼它要求郵件類是class
?是否有可能改變這種情況,以便庫更接近現有的代碼?我認爲這個約束並沒有增加,所以可能會有一些複雜性。