如果这样做会很棒。我试图以错误的方式实现我的想法吗?
我想使用partial方法,以便能够扩展现有代码,并简单地插入/输出方法的实现。
基本上恰恰是reference所说的:
部分方法使类设计者能够提供方法钩子, 类似于事件处理程序,开发人员可能决定实现或 不。如果开发人员没有提供实现,那么编译器 在编译时删除签名。
我首次尝试使用此功能如下:
DefinitionsBase.cs:
namespace ABC {
public partial class Definitions {
// No implementation
static partial void TestImplementaion();
}
}
DefinitionsExt.cs:
namespace ABC {
public partial class Definitions {
static partial void TestImplementaion(){
// Implementation is here
}
}
}
的Program.cs:
namespace ABC {
class Program {
static void Main(string[] args) {
Definitions.TestImplementaion();
}
}
}
它是相同的命名空间,但作为参考状态部分方法是隐式私有的。它不接受访问修饰符,我不能从我的类中调用它。有没有办法按我的意图使用它?
谢谢!
答案 0 :(得分:3)
您可以使用调用私有方法的公共方法,但我不确定这是否是您想要的。这只会使你的代码工作。
部分方法根据定义是私有的,因此在编译期间,如果未实现该方法,编译器不需要遍历所有代码,找到对该方法的所有可能引用,并将其删除。 这是一种设计选择,因为部分方法不一定需要实现,编译器只查看部分类实现而不是所有代码。 如果实现了一个调用partial方法并且未实现partial方法的公共方法,编译器仍然只会查看部分类文件和代码,即使您可以从代码中的任何位置访问该部分方法。