如何在C#中使用partial方法来扩展现有的实现

如果这样做会很好。 我试图以错误的方式实现我的想法吗?

我想使用partial方法,以便能够扩展现有代码,并简单地插入/输出方法的实现。

基本上正是参考文献的内容:

部分方法使类设计者能够提供类似于事件处理程序的方法钩子,开发人员可以决定是否实现。 如果开发人员不提供实现,则编译器会在编译时删除签名。

我第一次尝试使用它是以下内容:

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(); } } } 

它是相同的命名空间,但作为参考状态, 部分方法是隐式私有的 。 它不接受访问修饰符,我不能从我的类中调用它。 有没有办法按我的意图使用它?

谢谢!

您可以使用调用私有方法的公共方法,但我不确定这是否是您想要的。 这只会使你的代码工作。

根据定义,部分方法是私有的,因此在编译期间,如果未实现该方法,编译器不需要遍历所有代码,找到对该方法的所有可能引用,并将其删除。 这是一种设计选择,因为部分方法不一定需要实现,编译器只查看部分类实现而不是所有代码。 如果实现了一个调用partial方法且未实现partial方法的公共方法,则编译器仍然只会查看部分类文件和代码,即使您可以从代码中的任何位置访问该部分方法。