follwing状況最低料金:クラスまたはインターフェイスのIDisposableを宣言しますか?
public interface ISample
{
}
public class SampleA : ISample
{
// has some (unmanaged) resources that needs to be disposed
}
public class SampleB : ISample
{
// has no resources that needs to be disposed
}
クラスSampleAは、リソースを解放するためのインターフェイスIDisposableインターを実装する必要があります。 次の2つの方法でこれを解決できます。それを実装するためのインタフェースISampleと力派生クラスに追加します
public class SampleA : ISample, IDisposable
{
// has some (unmanaged) resources that needs to be disposed
}
2:
1.クラスSampleAするために必要なインタフェースを追加します。
public interface ISample : IDisposable
{
}
あなたは、彼らが処分することは何もない場合でも、IDisposableインターを実装するために任意の実装を強制するインタフェースにそれを置く場合。一方、インターフェイスの具体的な実装にはdispose/usingブロックが必要であり、クリーンアップのためにIDisposableとしてキャストする必要はありません。両方の方法でさらにいくつかの長所/短所があるかもしれません...なぜ、他の方法より優先される方法を使用するように提案しますか?
インタフェースに対して書かれたコード(おそらく既に構築されたインスタンスが渡されたと思われる)は、そのインスタンスの(有効な)有効期間を終了させる責任はありますか? –
@Damien_The_Unbeliever:いいえ、ISampleはファクトリメソッドの結果またはDependency Injectionから来ると仮定します。 – Beachwalker
それは事です - もし工場から来たら*あなたのコード*は処分の責任を負う可能性があります - それで私はそれをInterfaceに載せます。しかし、注入されている場合は、インジェクタが生涯責任を負うと仮定しているので、インタフェースには適合しません。質問には一応の答えがあるとは思いません。 –