在已编译的LINQ-> SQL类上创建部分方法

时间:2009-08-26 16:40:15

标签: c# .net linq-to-sql .net-3.5

如果我想将我的LINQ-> SQL类编译成DLL以提供给我的开发人员,我怎样才能使它们仍然可以挂钩到各种实体部分方法(例如OnValidate)?我知道你不能在已编译的程序集上实现部分方法,但是对于如何提取这种行为(可能包含事件?)的任何建议都将不胜感激。

4 个答案:

答案 0 :(得分:1)

据我所知,你不能。

当编译器遇到部分类时,它将它们组合在一起形成一个完整的类。我认为你的需求得到满足的唯一方法就是让你的类可以继承,但是使用L2S,这可能会比它的价值更麻烦。

编辑:

至于事件,取决于你的L2S班级数量,这完全取决于你愿意投入的内容。这个解决方案可行,但需要很长时间才能做到。将Interfaces与事件和自定义处理程序相结合可以帮助您实现目标,如果您想要访问大量类,请准备好投入时间。

MSDN - Partial Classes

答案 1 :(得分:1)

您可能需要根据需要自定义此解决方案,但可以通过以下方式完成从部分方法发布事件的简单方法:

partial class LinqClass
{
    public event Action<LinqClass, ChangeAction> OnValidating;

    partial void OnValidate(ChangeAction action)
    {
        if (OnValidating != null)
        {
            OnValidating(this, action);
        }
    }
}

您可能需要也可能不需要传递不同的参数,但Action将支持众多参数。

答案 2 :(得分:0)

我会通过在任何你想要的地方发布公共事件来处理这个问题。

答案 3 :(得分:0)

  

如果我想将我的LINQ-&gt; SQL类编译成DLL以提供给我的开发人员

我不认为这是个好主意。 LinqToSql模型可能需要更改的原因有很多。您可能需要修改模型,同时发现对您的域等的新见解。

通过创建一个单独的DLL“提供给您的开发人员”,您创建了一个可能会妨碍开发效率的人为边界。获得源控制系统可能更适合您可能尝试完成的任务(这里非常模糊)