4

如果这行得通,那就太好了。我是否试图以错误的方式实现我的想法?

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

基本上正是参考文献所说的:

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

我第一次尝试使用它如下:

定义Base.cs:

namespace ABC {
    public partial class Definitions {
        // No implementation
        static partial void TestImplementaion();
    }
}

定义Ext.cs:

namespace ABC {
    public partial class Definitions {
        static partial void TestImplementaion(){
            // Implementation is here
        }
    }
}

程序.cs:

namespace ABC {
    class Program {
        static void Main(string[] args) {
            Definitions.TestImplementaion();
        }
    }
}

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

谢谢!

4

1 回答 1

3

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

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

于 2015-09-22T07:37:59.670 回答