如何将多个表类型传递给单个方法?

时间:2015-04-03 02:55:17

标签: c# model-view-controller unit-of-work

在我们的模型上下文中,有许多类型为IDbSet<TEntity>的表。 如何编写一个接受多种类型的表作为参数的方法?

编辑:我只需要接受一个参数,但它可以是Context中的任何类型的表。

编辑:好的,我正在尝试使用Praveen发布的方法:

void Method<TEntity>(IDbSet<TEntity> set) where TEntity : class
{
    //method code goes here
}

但是当我尝试调用该方法时,我遇到了一个问题:Intellisense说“在非泛型声明中不允许使用约束”。以下是我试图调用该方法的方法:

Table tableType = new Table(); 
Method(tableType);

2 个答案:

答案 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。