Entonces, tengo un pequeño problema aquí.Contratos de código: ContractClassFor cuando se trata de una clase abstracta genérica?
Supongamos que tengo:
public class Repository<TEntity>
where TEntity : class
{
public abstract void Add(TEntity entity);
// ...and so on...
}
Y ahora quiero definir una clase de contrato, así:
public class RepositoryContracts<TEntity> : Repository<TEntity>
where TEntity : class
{
public void Add(TEntity entity)
{
Contract.Requires(entity != null);
}
// ...etc...
}
Ahora, tendría que marcar estas clases con ContractClassAttribute y ContractClassForAttribute. siendo un problema, esto no funcionará:
[ContractClassFor(typeof(Repository<TEntity>))] // what is TEntity?! error!
Por lo tanto, la cuestión se reduce a: ¿Cómo se enlazan estas dos clases juntos utilizando esos atributos, cuando están genérico?
Estoy teniendo el mismo problema, eliminando el 'TEntity' genérico solucionado pero cuando' implemento' esta 'interfaz' en alguna otra' clase', se queja de que 'clase' o' interfaz' no implementa métodos IRepository . Algunas ideas ? –