我希望创建扩展类,将不同程序集中的实体框架实体扩展到EF实体。我还想在扩展方法类(使用T4)中编写一些附加/泛型方法,然后能够使用其他自定义方法创建部分扩展方法类。这可能。
答案 0 :(得分: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()
,导入两者都会看到这两者。它们可以位于不同的程序集中,也可以位于导入MyEntity
命名空间的任何位置。因此,部分扩展并非真正有效的概念。事实上,将扩展方法放在类中的想法实际上是一种破坏 - 遗憾的是它们无法解决C#的规则,足以让扩展方法在类之外生存。
答案 1 :(得分:2)
是的 - 我尝试了它并且有效。
没有“扩展”类这样的东西 - 只有扩展方法必须在“静态”类中。
您可以拥有静态部分类。
更新:对不起,我看了你的标题,但没有看到问题的文字。 答案仍然是肯定的,但为什么不创建新的类?在这种情况下,我无法看到部分课程如何真正有用。
答案 2 :(得分:2)
我在这里可以看到的主要问题是“在不同的装配中”这个短语。如果不是这样的话,您可以使用常规实例方法在其他partial class
中添加您的方法等,这样就可以了。
你可以拥有静态部分类,但是你不能使用部分类来添加到另一个程序集中的类型。扩展方法在部分类中工作正常,但请注意,部分类纯粹是在不同文件之间拆分代码的机制。您可以轻松地为扩展方法提供多个静态类。