3

なぜ私はこれを行うことができるのですか?

var _channel = new ChannelFactory<T>("bindingname").CreateChannel();

しかし、これではありません

var _channelFactory = new ChannelFactory<T>("bindingname");
var _channel = _channelFactory.CreateChannel();

EndPointAddress2番目のスニペットは、インを渡す必要があると文句を言いますが、1番目のスニペットはパスしCreateChannel()ません。

2つのスニペットは本質的に同じではありませんか?

4

2 に答える 2

7

var _channelFactory = new ChannelFactory<T>("bindingname"); _channelFactoryを。IChannelFactory<T>ではなくに解決していることが原因である可能性がありChannelFactory<T>ます。

試す

ChannelFactory<T> _channelFactory = new ChannelFactory<T>("bindingname");
var _channel = _channelFactory.CreateChannel();

ChannelFactory <T>には、パラメーターを受け取らないCreateChannel()メソッドがあります。IChannelFactory <T>には、パラメーターを受け取らないCreateChannel()メソッドがありません。

于 2013-12-05T11:47:17.040 に答える
0

ChannelFactoryのコンストラクターの署名を見ると、単一の文字列を入力として受け取るのは、バインディング名ではなく、endpointConfigurationNameを要求することだけです。これがあなたの問題の根源でしょうか?ChannelFactoryを正しく構築していない可能性がありますか?下記参照:-

    public ChannelFactory();
    public ChannelFactory(Binding binding);
    public ChannelFactory(ServiceEndpoint endpoint);
    public ChannelFactory(string endpointConfigurationName);
    protected ChannelFactory(Type channelType);
    public ChannelFactory(Binding binding, EndpointAddress remoteAddress);
    public ChannelFactory(Binding binding, string remoteAddress);
    public ChannelFactory(string endpointConfigurationName, EndpointAddress remoteAddress);
于 2012-12-19T11:44:16.600 に答える