私は一般的な制約を試しています。クラスの制約を次のように宣言する場合:
public class DocumentPrinter<T> where T : IFooDoc
DocumentPrinter クラスのメソッド内で IFooDoc によって宣言されたメソッドにアクセスできます。ただし、制約を宣言するインターフェイスを DocumentPrinter に実装させると、次のようになります。
public interface IDocumentPrinter<T> where T : IFooDoc
{
void Add(T fooDoc);
void PrintFoos();
}
DocumentPrinter を次のように宣言します。
public class DocumentPrinter<T>: IDocumentPrinter<T>
IFooDoc インスタンスのプロパティ/メソッドは、ドキュメント プリンターのメソッド内では使用できなくなりました。型で宣言されたメンバーにアクセスするには、クラス自体にインターフェイス制約を明示的に宣言する必要があるようです。
私はこれを正しく理解していますか、それともインターフェイスで制約を宣言し、その制約をクラスで実現することは可能ですか?