Also, ich habe ein kleines Problem hier.Code Contracts: ContractClassFor im Umgang mit einer generischen abstrakten Klasse?
Angenommen, ich habe:
public class Repository<TEntity>
where TEntity : class
{
public abstract void Add(TEntity entity);
// ...and so on...
}
Und jetzt möchte ich einen Vertrag Klasse definieren, etwa so:
public class RepositoryContracts<TEntity> : Repository<TEntity>
where TEntity : class
{
public void Add(TEntity entity)
{
Contract.Requires(entity != null);
}
// ...etc...
}
Nun würde ich diese Klassen mit ContractClassAttribute und ContractClassForAttribute markieren müssen. Problem ist, das wird nicht funktionieren:
[ContractClassFor(typeof(Repository<TEntity>))] // what is TEntity?! error!
Also, die Frage läuft darauf hinaus: Wie verknüpfe ich diese zwei Klassen zusammen diese Attribute verwenden, wenn sie sind Generika?
Ich habe das gleiche Problem, das Entfernen der generischen 'TEntity' löste es, aber wenn ich diese' Schnittstelle' in einer anderen 'Klasse' implementiere, beschwert es sich, dass' class' oder 'interface' keine IRepository Methoden implementiert . Irgendwelche Ideen ? –