2

プログラムで WCF サービスに接続する WinForms クライアントがあります。これが接続変数の宣言方法です...

var myBinding = new NetTcpBinding(); 
var myEndpoint = new EndpointAddress(myURI); 
var myChannelFactory = new ChannelFactory<IService>(myBinding, myEndpoint);

ただし、if 文の結果によって、(NetTcpBinding だけでなく) 別のクラスを使用して "myBinding" (同じ変数名) を定義できるように変更したいと考えています。

これは私が望むものです (うまくいかないことはわかっていますが、私の意図を理解してください)

if (bindingType == "BasicHttpBinding") { var myBinding = new BasicHttpBinding(); }
if (bindingType == "NetTcpBinding") { var myBinding = new NetTcpBinding(); }
if (bindingType == "WSHttpBinding") { var myBinding = new WSHttpBinding(); }

機能する方法で同じ結果を達成する方法を誰か教えてもらえますか? ここでも、if ステートメントの結果に応じて "myBinding" を定義できるようにしたいと考えています。また、代替の提案を検討することにもオープンです。ありがとう

4

1 に答える 1

5

これが機能することは保証できませんが、基本クラスmyBindingとして宣言してみてください。

string bindingType = "BasicHttpBinding";
System.ServiceModel.Channels.Binding myBinding;

if (bindingType == "BasicHttpBinding") { myBinding = new BasicHttpBinding(); }
if (bindingType == "NetTcpBinding") { myBinding = new NetTcpBinding(); }
if (bindingType == "WSHttpBinding") { myBinding = new WSHttpBinding(); }
于 2012-04-22T03:46:45.530 に答える