动作委托使用通用参数

时间:2012-02-04 09:18:53

标签: .net linq delegates

有一些代码:

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继承,但我想知道,是否有可能采取另一种方式?

2 个答案:

答案 0 :(得分:0)

如果你可以为表引入一个通用接口 - 你可以编写一个函数\ delegate,它具有该接口类型的参数,并将每个表作为该参数传递。

答案 1 :(得分:0)

如果您要检查的特定属性/属性在数量上是固定的并且在编译时已知,那么为这些表添加特定接口(通过部分类,我假设)可能是最简单的并且仍然类型-安全。否则,您正在查看反射,或使用动态,或者根据目标使用动态LINQ。

给出一个更具体的例子可能有所帮助,因为我不清楚你是否想要采用适合某种模式的特定表格,或者无论如何都要使用任何表格。