【发布时间】:2014-01-11 17:08:03
【问题描述】:
MassTransit 中的消费者接口都期望消息模型是类而不是结构。由于它们都是内部接口(我必须说那里的设计非常好),这是显示约束的通用容器类,直接采用from the source code:
/// <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?是否有可能改变这一点,以便库与现有代码更无缝地接口?我认为该约束并不是白白添加的,因此可能存在一些复杂情况。
【问题讨论】:
标签: c# .net constraints masstransit type-constraints