/// <summary> /// 用于更改运行时属性值或插入自定义扩展对象(例如错误处理程序、消息或参数拦截器、安全扩展以及其他自定义扩展对象)。 /// </summary> /// <param name="serviceDescription">服务说明。</param><param name="serviceHostBase">当前正在生成的宿主。</param> public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase) { if (serviceDescription == null) throw new ArgumentNullException("serviceDescription"); if (serviceHostBase == null) throw new ArgumentNullException("serviceHostBase"); var source = serviceDescription.Endpoints.Where( ep => ep.Contract.ContractType.IsAssignableFrom(_implementationType)).Select(ep => ep.Contract.Name).ToArray(); var provider = new RabbitInstanceProvider(_workContextAccessor, _componentRegistration); foreach (var dispatcher2 in serviceHostBase.ChannelDispatchers.OfType<ChannelDispatcher>().SelectMany(dispatcher => dispatcher.Endpoints.Where(dispatcher2 => source.Contains(dispatcher2.ContractName)))) dispatcher2.DispatchRuntime.InstanceProvider = provider; }
/// <summary> /// 用于更改运行时属性值或插入自定义扩展对象(例如错误处理程序、消息或参数拦截器、安全扩展以及其他自定义扩展对象)。 /// </summary> /// <param name="serviceDescription">服务说明。</param><param name="serviceHostBase">当前正在生成的宿主。</param> public void ApplyDispatchBehavior(ServiceDescription serviceDescription, ServiceHostBase serviceHostBase) { if (serviceDescription == null) { throw new ArgumentNullException("serviceDescription"); } if (serviceHostBase == null) { throw new ArgumentNullException("serviceHostBase"); } var source = serviceDescription.Endpoints.Where( ep => ep.Contract.ContractType.IsAssignableFrom(_implementationType)).Select(ep => ep.Contract.Name).ToArray(); var provider = new RabbitInstanceProvider(_workContextAccessor, _componentRegistration); foreach (var dispatcher2 in serviceHostBase.ChannelDispatchers.OfType <ChannelDispatcher>().SelectMany(dispatcher => dispatcher.Endpoints.Where(dispatcher2 => source.Contains(dispatcher2.ContractName)))) { dispatcher2.DispatchRuntime.InstanceProvider = provider; } }