在我们的模型上下文中,有许多类型为IDbSet<TEntity>
的表。
如何编写一个接受多种类型的表作为参数的方法?
编辑:我只需要接受一个参数,但它可以是Context中的任何类型的表。
编辑:好的,我正在尝试使用Praveen发布的方法:
void Method<TEntity>(IDbSet<TEntity> set) where TEntity : class
{
//method code goes here
}
但是当我尝试调用该方法时,我遇到了一个问题:Intellisense说“在非泛型声明中不允许使用约束”。以下是我试图调用该方法的方法:
Table tableType = new Table();
Method(tableType);
答案 0 :(得分:0)
为了在你的方法参数中传递TEntity,你应该这样做。
void Method<TEntity>(IDbSet<TEntity> set) where TEntity : class
{
//method code goes here
}
现在可以使用任何DbSet调用此方法。 E.g。
TestEntities testEntities = new TestEntities();
Method(testEntities.Tables);
但是,如果您希望直接传递Table而不是DbSet,则将定义更改为
void Method<TEntity>(TEntity set) where TEntity : class
{
//method code goes here
}
并像这样称呼它
Method(new Table());
答案 1 :(得分:0)
我认为你应该创建一个Base类或一个接口,并在你的方法中添加一个Generics Constrians。喜欢: public vlid Method(IDbSet list),其中TEntity:IYourInterface
然后你会在方法中得到intellisense。