2012-10-24 13 views
5

是否可以在C#中的两个文件之间拆分方法?我知道部分方法在那里,但他们似乎无法做到这一点。在C#中跨两个文件拆分方法

这里是场景。我使用的是开源库,需要在一个或多个文件中添加一些自定义项。例如,我想将两个新字段添加到类Employee,然后在该类的InitializeFields()方法中初始化它们。由于开源项目不断发展,并且不时发布新版本,因此我希望将我的定制与原始项目分开,以便轻松升级到更新版本的库。

我已经使用partial class语法将所有需要的类拆分为Orig.csCustom.cs,并在Custom.cs中添加了我的自定义字段。现在问题是我没有办法拆分InitializeFields()方法,所以我的自定义代码进入Custom.cs文件。

请注意,我不能使用继承来解决问题。开放源代码库将包含许多对Employee类的引用,我无法改变它们。

+7

一般来说,这不是*可扩展现有代码的可维护方式。你有没有考虑从Employee类继承并添加你自己的字段?这样你可以重写'InitializeFields()',初始化你自己的字段,然后调用'base.InitializeFields()'。 –

+0

我很抱歉为什么你不能使用继承?因为有很多改变?找到并替换解决这个问题? –

+0

_将包含许多对Employee类的引用,并且我无法承担改变它们的全部功能_--请看看__Refactor,Rename__ –

回答

5

当你这样做时,你自己编译库,对吧?

我知道你不想子类Employee,因为那么所有的库代码new Employee()将无法​​正常工作。但是,如果您在Orig.cs中将Employee重命名为EmployeeBase,并在Custom.cs中提供类Employee?那样当库代码被编译时,new Employee()会引用你的类,而不是库中的一个。由于您在同一个项目中编译库和自定义,因此可以进行此替换。

+0

非常有创意的答案:) –

+0

谢谢大卫。巧妙地使用OOP。 – dotNET