【发布时间】:2011-02-19 06:45:24
【问题描述】:
我有一种情况,网站可以根据字符串从我的数据库中请求数据(别担心 - 我正在防止 SQL 注入)。出于各种原因,我希望有一个方法可以返回用户期望的对象(来自 EF)(最终通过部分页面返回)。
我在想这样的事情:
public <GenericType?> GetObject(int id, string typeName) {
switch(typeName) {
case "Type1":
return db.Type1s.SingleOrDefault(t => t.TypeID == id);
case "Type2":
return db.Type2.SingleOrDefault(t => t.TypeID == id);
default:
return null;
}
}
有可能做这样的事情吗? (我要避免的是必须提前执行 switch 语句,然后调用特定的 Repository 方法,因为我必须重复代码并多次执行此操作。)
【问题讨论】:
-
我很想推荐一个动态解决方案,但是动态对象不能调度扩展方法(如
IEnumerable<T>.Where),表达式树不能有动态操作。 -
看看WCF Data Services,以前称为“ADO.NET 数据服务”。
-
Adam - 我确信这可以使用表达式树来实现...
-
@flesh - 我知道你可以,但我不知道这有多容易。我需要真正深入了解表达式树。
标签: c# generics entity-framework-4