public override IChannelListener <TChannel> BuildChannelListener <TChannel>(BindingContext context) { if (context == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("context"); } if (!this.CanBuildChannelListener <TChannel>(context)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument("TChannel", SR.GetString(SR.ChannelTypeNotSupported, typeof(TChannel))); } TcpChannelListener listener; if (typeof(TChannel) == typeof(IReplyChannel)) { listener = new TcpReplyChannelListener(this, context); } else if (typeof(TChannel) == typeof(IDuplexSessionChannel)) { listener = new TcpDuplexChannelListener(this, context); } else { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument("TChannel", SR.GetString(SR.ChannelTypeNotSupported, typeof(TChannel))); } AspNetEnvironment.Current.ApplyHostedContext(listener, context); return((IChannelListener <TChannel>)(object) listener); }
public override IChannelListener <TChannel> BuildChannelListener <TChannel>(BindingContext context) where TChannel : class, IChannel { TcpChannelListener listener; if (context == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("context"); } if (!this.CanBuildChannelListener <TChannel>(context)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument("TChannel", System.ServiceModel.SR.GetString("ChannelTypeNotSupported", new object[] { typeof(TChannel) })); } if (typeof(TChannel) == typeof(IReplyChannel)) { listener = new TcpReplyChannelListener(this, context); } else { if (typeof(TChannel) != typeof(IDuplexSessionChannel)) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgument("TChannel", System.ServiceModel.SR.GetString("ChannelTypeNotSupported", new object[] { typeof(TChannel) })); } listener = new TcpDuplexChannelListener(this, context); } AspNetEnvironment.Current.ApplyHostedContext(listener, context); return((IChannelListener <TChannel>)listener); }