私はベースインターフェイスIInterface
を持っているとします。私は、IInterface
、ClassA
、ClassB
を実装するクラスにする必要があります。いくつかのサブクラスがIDisposableで他のサブクラスがそうでないクラス階層をどのように処理するのですか?
public interface IInterface
{
}
public class ClassA : IInterface
{
}
public class ClassB : IInterface, IDisposable
{
}
ClassB
がIDisposable
あるとClassA
はないことに注意してください。今、工場からいっぱいのList<IInterface>
を作成したい場合は、使い捨て要素の廃棄をどのように処理しますか?別のオブジェクトを作成する必要がありますか?オブジェクトが構築されると(または構築後に)リストをフィルタリングしますか?私はちょうどIInterface
IDisposable
デフォルトの実装を持つ基本抽象クラス(C#7がデフォルトのインターフェイス実装を追加するまで)を使うべきですか?
将来的に読むのが最も簡単で使いやすいものは何ですか。潜在的な子供がIDisposable
に使い捨て可能なすべてのインターフェースを作成することは、潜在的に面倒な方法です。また、それはまた、理想的ではないように見える空の処分実装を持つ基盤を必要とする。
はい、IInterfaceをIDisposableにします。私は、抽象基本クラスを捨てて、それらをすべて明示的に実装します。 –
これはC#の緊急性の問題です。したがって、「理想的な」答えはありません。 typeclasses/traitsを持つ言語では、事実の後にインタフェース定義を「取り付ける」ことができます。これにより、このようなものがよりクリーンになります。 C#では、IInterface:IDisposableを作成することが最良の中間地であると思います。 –