3
我想使用抽象類將代碼契約添加到通用接口,但是驗證類型參數的位置。使用具有類型條件的通用接口的代碼契約
這裏是我想要做什麼的例子:
[ContractClass(typeof(ContractsForIRepository<,>))]
public interface IRepository<T, in TId> where T : IEntity
{
T GetById(TId id);
T Persist(T entity);
void Remove(TId id);
}
[ContractClassFor(typeof(IRepository<,>))]
internal abstract class ContractsForIRepository<T, TId> : IRepository<T, TId>
{
public T GetById(TId id)
{
Contract.Requires(id != null);
return default(T);
}
public T Persist(T entity)
{
Contract.Requires(entity != null);
return default(T);
}
public void Remove(TId id)
{
Contract.Requires(id != null);
}
}
我可以很容易地得到它通過降低條件的工作:
public interface IRepository<T, in TId> where T : IEntity
public interface IRepository<T, in TId>
但我真的想保留這一點。可能嗎?
我還沒有已知的對空屬性類型說明符('[ContractClass(typeof運算(ContractsForIRepository <,>))] '和'[ContractClassFor(typeof運算(IRepository <,>))]'。 –
當我設置「堅持(T實體)」方法的斷點不會中斷,爲什麼? – barteloma