定制模拟:
public class DbSetMock : IDbSet<Tenant> { /* hidden all other implemented methods/properties */ public TDerivedEntity Create<TDerivedEntity>() where TDerivedEntity : class,Tenant { throw new NotImplementedException(); } }
create方法给出一个构建错误,我没有解释如何解释的线索:
cannot specify both a constraint class and the ‘class’ or ‘struct’ constraint
简单地从约束中删除类导致另一个构建错误(我也不明白:()).
The constraints for type parameter ‘TDerivedEntity’ of method ‘Tests.DAL.Tenants.DbSetMock.Create<TDerivedEntity>()’ must match the constraints for type parameter ‘TDerivedEntity’ of interface method ‘System.Data.Entity.IDbSet<BusinessLayer.DAL.Tenants.Tenant>.Create<TDerivedEntity>()’. Consider using an explicit interface implementation instead.
有人可以帮我成功地建立这个班吗?
解决方法
更新:好奇地似乎在这里编译错误之间有冲突.如果你“修复”一个你得到另一个,在无限循环的绝望.幸运的是,第二个错误也给了我们一个办法:你可以使用一个明确的界面实现:
public class DbSetMock : IDbSet<Tenant> { TDerivedEntity IDbSet<Tenant>.Create<TDerivedEntity>() { throw new NotImplementedException(); } }
似乎没有办法实现该方法而不使用显式接口实现.如果您需要它作为该类的公共接口的一部分,我建议创建一个接口实现转发到另一个方法:
public class DbSetMock : IDbSet<Tenant> { TDerivedEntity IDbSet<Tenant>.Create<TDerivedEntity>() { return Create<TDerivedEntity>(); } public TDerivedEntity Create<TDerivedEntity>() where TDerivedEntity : Tenant { throw new NotImplementedException(); } }
原文地址:https://www.jb51.cc/csharp/95576.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。