【发布时间】:2013-01-23 01:57:33
【问题描述】:
我正在尝试通过创建 IDbSet 的自定义模拟来解决 mocking issue。
自定义模拟:
public class DbSetMock : IDbSet<Tenant>
{
/* hidden all other implemented methods/properties */
public TDerivedEntity Create<TDerivedEntity>() where TDerivedEntity : class, Tenant
{
throw new NotImplementedException();
}
}
create 方法给出了一个构建错误,我不知道如何解决:
不能同时指定约束类和“类”或“结构”约束
简单地从约束中删除 class 会导致另一个构建错误(我也不明白 :( )。
方法“Tests.DAL.Tenants.DbSetMock.Create
()”的类型参数“TDerivedEntity”的约束必须匹配接口方法“System.Data.Entity.IDbSet”的类型参数“TDerivedEntity”的约束 .Create ()'。考虑改用显式接口实现。
谁能帮我成功搭建这个类?
【问题讨论】:
-
我有兴趣了解错误消息告诉您如何解决问题的情况 - 您应该考虑使用显式接口实现,如错误所示 - 并且然而,即使信息告诉你该怎么做,你最终还是会在互联网上向人们寻求帮助。编译器团队可以做些什么来让您自己解决问题?
-
可能没什么,我根本不够聪明,无法解决这些琐碎的问题。我真诚地向我伟大的思想领袖道歉。
-
@EricLippert 那么在这种情况下没有办法通过公共方法实现该接口方法吗?
-
@Haxx:我想帮忙。没有必要讽刺。如果错误消息不清楚或没有帮助,那么我可以提倡比您更容易地对其进行更改。
-
@svick:我不知道;我没有考虑太多。我不熟悉那个界面。