有一些代码:
using (var ctx = new testDataContext())
{
var options = new DataLoadOptions();
options.LoadWith<TableA>(p => p.TableB);
...
var tmp = ctx.TableA.Where(p => p.TableB != null);
...
}
想包装它:
Action<T> test = x => {
using (var ctx = new testDataContext())
{
var options = new DataLoadOptions();
options.LoadWith<TableA>(p => typeof(x));
...
var tmp = ctx.TableA.Where(p => p.GetType().GetProperty(x) != null);
...
}
}
test(TableB);
test(TableC);
或类似的东西。
这个想法是 - 对于作为参数传递的不同表,使用相同的方法到某个函数。
我知道linq2sql继承,但我想知道,是否有可能采取另一种方式?
答案 0 :(得分:0)
如果你可以为表引入一个通用接口 - 你可以编写一个函数\ delegate,它具有该接口类型的参数,并将每个表作为该参数传递。
答案 1 :(得分:0)
如果您要检查的特定属性/属性在数量上是固定的并且在编译时已知,那么为这些表添加特定接口(通过部分类,我假设)可能是最简单的并且仍然类型-安全。否则,您正在查看反射,或使用动态,或者根据目标使用动态LINQ。
给出一个更具体的例子可能有所帮助,因为我不清楚你是否想要采用适合某种模式的特定表格,或者无论如何都要使用任何表格。