我正在试验通用约束。当这样声明一个类的约束时:
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 实例的属性/方法在 Document 打印机的方法中不再可用。如果我要访问由该类型声明的成员,我似乎必须在类本身上显式声明一个接口约束。
我是否正确理解这一点,或者是否可以在接口上声明约束并让类实现该约束?