使用 Rebus 的可配置主题名称

Configurable Topic name with Rebus

主题需要通过配置文件进行配置。

下面是代码。我想知道这是否是最佳解决方案或任何内置支持或更好的解决方案?

public class TopicNameConvention : ITopicNameConvention
{
    private readonly Config _config;

    public TopicNameConvention(Config config)
    {
        _config= config;
    }
    public string GetTopic(Type eventType)
    {
        switch (eventType.Name)
        {
            case nameof(Order):
                return _config.Topic.Name;

             //... more
        }
        throw new Exception("Topic name not exist");
    }
}

如果您打算手动配置每个事件类型的主题名称,请继续。

我个人的看法是,这似乎很死板,我担心每当引入新的事件类型时,您都必须同时更新太多东西。

为什么不选择

public string GetTopic(Type eventType) => eventType.Name;

它可以处理世界上所有的 .NET 类型(只要确保在两个不同的命名空间中没有两个同名的事件类型)。