我在共享项目中有一个静态类,我希望在另一个项目中使用更多方法进行扩展.因为我想扩展静态类的方法仅适用于第二个项目,并且还依赖于该不同项目中的其他类,所以我不能只将它移动到共享项目中.
基本上我在MySolution.SharedProject中有X类.我想在MySolution.PrimaryProject中创建一个引用SharedProject的方法X.Get().
似乎我不能跨项目做部分,我也不能使用扩展方法扩展静态类.
我该怎么做呢??!
对于所有后来的访问者: 选择的答案符合我的要求,但更好的方式是Jon Skeet概述 - 选择不同的类名并将其完成.
Jon*_*eet 16
你不能.类型只能存在于单个程序集中.(这就是为什么部分类型不能在项目之间拆分的原因.CLR没有部分类型的概念 - 它们只是编译器魔法从多个文件编译单个类型.)
为什么不在第二个项目中创建一个新类型?"延伸"课程的好处在哪里?
编辑:听起来你应该有两个类,例如CommonValidation和ProjectValidation.很明显哪些方法属于哪一类...我真的不明白为什么会产生问题.
您不能使用部分类。您可以使用继承,但是不允许您创建该类static,因此只需将其所有方法设为静态即可。然后通过保护构造函数来防止实例化:
namespace SharedProject
{
public class X
{
protected X() { }
public static void SharedMethod() { }
}
}
namespace PrimaryProject
{
public class X : SharedProject.X
{
protected X() { }
public static void ProjectMethod() { }
}
}
Run Code Online (Sandbox Code Playgroud)
使用时您将能够看到这两种方法PrimaryProject.X。当然,这些类实际上会位于不同的文件中,甚至位于不同的项目中。
正如乔恩指出的,这可能会有点令人困惑。就我个人而言,我只会使用两个不同的类名,而不使用继承。
我知道,每次都想出名字有点烦人,而且不同命名空间中相同的类名也有些不切实际。如果您的命名空间很长,则使用该using指令在本地为它们添加别名可能会有所帮助。
| 归档时间: |
|
| 查看次数: |
8663 次 |
| 最近记录: |