1

我正在构建 NServiceBus 网关处理程序,我需要避免配置文件,以便在 c# 类中定义所有配置。因此,我必须将以下部分转换为 c# 代码

<GatewayConfig>
    <Channels>
       <Channel Address="http://localhost:25899/SiteB/" ChannelType="Http" Default="true"/>
    </Channels>
 </GatewayConfig>

我在 NServiceBus.Config 命名空间中找到了 GatewayConfig、ChannelCollection 和 ChannelConfig,但我无法将它们链接在一起,因为 GatewayConfig 指的是 ChannelCollection,但 ChannelCollection 与 ChannelConfig 无关。请帮忙

4

2 回答 2

2

只需创建一个实现 GatewayConfig 的 IProvideConfiguration 的类。这为您提供了一种提供自己的配置的方法。查看 pubsub 示例以获取有关如何执行此操作的详细信息。

于 2012-05-18T22:06:55.823 回答
1

好吧,当我安装 Reflector 并研究实现时,我已经找到了方法。有一个 ChannelCollection.CreateNewElement() 方法返回 System.Configuration.ConfigurationElement。NServiceBus 覆盖了在其中实例化 ChannelConfig 的方法,所以我所要做的就是将 ConfigurationElement 类型转换为 ChannelConfig 类型,这与直观界面相去甚远。看起来这个 NServiceBus.Config.ChannelCollection 是一项未完成的工作,因为如果您查看其他集合,如 NServiceBus.Config.MessageEndpointMappingCollection,您会发现所有必要的类型安全方法来处理其子元素 NServiceBus.Config.MessageEndpointMapping,所以我认为 NServiceBus 团队只是懒得为 ChannelCollection 做同样的事情。

更新:由于 CreateNewElement() 方法受到保护,我必须实现我自己的从 ChannelCollection 继承的类,以使添加新 ChannelConfig 元素的方法公开可用

于 2012-05-17T17:43:55.793 回答