所以,我有点小问题。
假设我有:
public class Repository<TEntity>
where TEntity : class
{
public abstract void Add(TEntity entity);
// ...and so on...
}
现在我要定义一个契约类,如下所示:
public class RepositoryContracts<TEntity> : Repository<TEntity>
where TEntity : class
{
public void Add(TEntity entity)
{
Contract.Requires(entity != null);
}
// ...etc...
}
现在,我必须用ContractClassAttribute和ContractClassForAttribute标记这些类。问题是,这行不通:
[ContractClassFor(typeof(Repository<TEntity>))] // what is TEntity?! error!
所以,问题归结为:当这两个类是通用的时,如何使用这些属性将它们链接在一起?