我正在尝试构建一个静态dbcontext类,用于我的核心dll,
班级定义......
public static class dbContext
{
public static T Execute(Func<otherLib.dbContext, T> f)
{
using (var db = new otherLib.dbContext())
return f(db);
}
public static IEnumerable<T> Execute(Func<otherLib.dbContext, T> func)
{
using (var db = new otherLib.dbContext())
return f(db);
}
}
我想使用这个通常有时返回一个类型的项目,其他时候返回一个列表因此重载......
目前用法
protected List<otherLib.foo1s> foo1;
protected List<otherLib.foo2s> foo2;
protected List<otherLib.foo3s> foo3;
foo1 = dbContext.Execute(db => db.foo1s);
foo2 = dbContext.Execute(db => db.foo2s);
foo3 = dbContext.Execute(db => db.foo3s);
目前我得到标准错误T,当然重复几次......
Error 6 The type or namespace name 'T' could not be found (are you missing a using directive or an assembly reference?)
任何人都可以看到我出错的地方......
答案 0 :(得分:0)
这种方法存在很大缺陷。对于编译器,您需要在某处添加类型参数:
public static T Execute<T>(Func<otherLib.dbContext, T> f)
{
using (var db = new otherLib.dbContext())
return f(db);
}
即便如此,您的方法签名也是一样的,您将收到错误消息。
我不知道你如何有效地使用这种方法,我会对通用存储库做一些研究,如果这就是你所追求的。