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