。私は以下の拡張メソッドを使用して、繰り返しコードの行を最小限に保ちました。この拡張メソッドを使用してコードの
public static class ICommunicationObjectExtensions
{
public static void SafelyCloseConnection(this ICommunicationObject objectToClose)
{
bool success = false;
try
{
objectToClose.Close();
success = true;
}
finally
{
if (!success)
{
objectToClose.Abort();
}
}
}
}
例:もちろん
HelloWorldServiceClient client = new HelloWorldServiceClient();
HelloWorldDataContract dc = new HelloWorldDataContract();
try
{
client.Open();
dc = client.SayHello();
} // Add catch blocks here for anything you want to handle.
finally
{
client.SafelyCloseConnection();
}
これは、C#ですが、私はそれはまだ助けになるべきだと思います。
ことを、私はあなたのソリューションを好きですが、あなたは1を持っていますDependency Injectionで使用できます。サービスは依存関係であるため、私はそれに対してテストを実行したくありません。 –
私の解決策ではありません。いずれにしても、 'Service'を非静的にして、 'ChannelFactory 'または 'IClientChannel'を注入することができます。 –