Mam tu mały problem.Umowy dotyczące kodu: ContractClassDo postępowania z ogólną klasą abstrakcyjną?
Załóżmy, że mam:
public class Repository<TEntity>
where TEntity : class
{
public abstract void Add(TEntity entity);
// ...and so on...
}
A teraz chcę, aby zdefiniować klasę umowy, tak jak poniżej:
public class RepositoryContracts<TEntity> : Repository<TEntity>
where TEntity : class
{
public void Add(TEntity entity)
{
Contract.Requires(entity != null);
}
// ...etc...
}
Teraz będę musiał oznaczyć te zajęcia z ContractClassAttribute i ContractClassForAttribute. Problem jest, to nie będzie działać:
[ContractClassFor(typeof(Repository<TEntity>))] // what is TEntity?! error!
Więc pytanie sprowadza się do tego: Jak połączyć te dwie klasy razem za pomocą tych atrybutów, gdy są rodzajowe?
Mam ten sam problem, usuwając ogólny "TEntity", rozwiązałem go, ale kiedy "implementuję" ten "interfejs" w jakiejś innej "klasie", skarży się, że 'class' lub' interface' nie implementuje metod IRepository . Jakieś pomysły ? –