我正在构建一个实体库,我有一个接口,IIdentifiable<T>
。因此,例如,由Guids标识的实体实施IIdentifiable<Guid> with public Guid Id { get; }
。到现在为止还挺好。冗余泛型参数?
我有一个接口IRepository<T, TIdentifier> where T : IIdentifiable<TIdentifier>
。
在我看来,TIdentifier泛型参数是多余的,因为已经有的信息保存在T的泛型参数中。有没有什么办法可以让我有一个更清晰的IRepository实现,我只需要指定T in我的商业代码?
我在类似'IRepository<T> where T : IIdentifiable<T.GenericArgs[0]>
之后。
我怀疑这是可能的,但只是想我会问。也许新的C#4东西有这个东西呢?
事情是通用的Id属性会隐藏非通用的一个 – 2010-08-13 11:52:36
嗯,因为它们是接口,它不是'真正'隐藏。据推测,非通用的显式实现将只是调用通用的Id属性 – cordialgerm 2010-08-19 07:00:01