【问题标题】:Action Delegate With Generic Parameter具有通用参数的动作委托
【发布时间】:2012-02-05 13:48:22
【问题描述】:

有一些代码:

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

【问题讨论】:

    标签: .net linq delegates


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-06
        • 2011-05-09
        • 1970-01-01
        相关资源
        最近更新 更多