1

我正在寻找将不同程序集中的实体框架实体扩展到 EF 实体的扩展类。我还想在扩展方法类中编写一些附加/通用方法(使用 T4),然后能够使用其他自定义方法创建部分扩展方法类。这可能吗。

4

3 回答 3

3

你不需要它们。只需编写另一个扩展类。

namespace Namespace1
{
    public static class MyEntityBlibblingExtensions
    {
        public void Blibble(this MyEntity self)
        {
            // ...
        }
    }
}

然后,在别处...

namespace Namespace2
{
    public static class MyEntityFurtlingExtensions
    {
        public void Furtle(this MyEntity self)
        {
            // ...
        }
    }
}

任何导入Namespace1都会看到扩展方法Blibble(),而任何导入Namespace2都会看到Furtle(),并且同时导入两者都会看到。它们可以在不同的程序集中或任何 importMyEntity的命名空间中。因此,部分扩展并不是一个真正有效的概念。事实上,将扩展方法放在类中的想法本身就是一种 hack —— 遗憾的是,他们无法充分利用 C# 的规则,让扩展方法存在于类之外。

于 2012-05-30T07:44:13.043 回答
2

是的 - 我试过了,它奏效了。

没有“扩展”类之类的东西——只有扩展方法必须在“静态”类中。

您可以拥有静态部分类。

更新:对不起,我读了你的标题,但没有读到你的问题的文字。答案仍然是肯定的,但为什么不直接创建新类呢?在这种情况下,我看不出有一个部分类真的有什么帮助。

于 2012-05-30T07:40:11.163 回答
2

我在这里看到的主要问题是“在不同的程序集中”这个短语。partial class如果不是这样,您可以使用常规实例方法添加您的方法等,一切都会好起来的。

可以拥有静态分部类,但不能使用分部类添加到另一个程序集中的类型。扩展方法在部分类中可以正常工作,但请注意,部分类纯粹是一种在不同文件之间拆分代码的机制。您可以轻松地为扩展方法拥有多个静态类。

于 2012-05-30T07:41:55.860 回答