I would like to use CodeContracts for validating some specific implementations of generic interface. I had a basic generic interface
public interface IEnityMap<in TSource,out TDest>
{
TDest Map(TSource);
}
I want to determine CodeContracts for some specific interfaces. I trying to do something like this:
[ContractClass(typeof(ContractClass))]
public interface ISpecific: IEntityMap<SourceClass,DestClass>{}
[ContractClassFor(typeof(ISpecific))]
public abstract class ContractClass: ISpecific
{
public DestClass Map(SourceClass source)
{
Contract.Requires(source.SomeProperty!= null);
//Other checks
return default(DestClass);
}
}
My Mapping class implements generic interface - IEntityMap<,> (not ISpecific) and this contract does`t work.