5

C#でメソッドを2つのファイルに分割することは可能ですか? 部分的な方法があることは知っていますが、これを行うことはできないようです。

これがシナリオです。オープンソース ライブラリを使用しており、1 つ以上のファイルにいくつかのカスタマイズを追加する必要があります。たとえば、クラスに 2 つの新しいフィールドを追加し、そのクラスのメソッドでEmployeeそれらを初期化したいとします。InitializeFields()オープンソース プロジェクトは進化を続け、新しいバージョンが時々リリースされるため、カスタマイズを元のプロジェクトとは別にして、ライブラリの新しいバージョンに簡単にアップグレードできるようにしたいと考えています。

必要なすべてのクラスをOrig.csおよびCustom.csusingpartial class構文に既に分割し、カスタム フィールドを に追加しましたCustom.cs。ここでの問題は、メソッドを分割するInitializeFields()方法がないため、カスタム コードをCustom.csファイルに入れることです。

問題を解決するために継承を使用できないことに注意してください。オープンソース ライブラリには Employee クラスへの多数の参照が含まれており、それらすべてを変更する余裕はありません。

4

1 に答える 1

5

When you do this, you're compiling the library yourself, right?

I understand you don't want to subclass Employee, because then all the library code that does new Employee() won't work. However, what if you rename Employee to EmployeeBase in Orig.cs, and provide the class Employee in Custom.cs? That way when the library code is compiled, new Employee() will reference your class, not the library one. Since you're compiling the library and your customizations in the same project, you can make this substitution.

于 2012-10-24T12:48:11.113 に答える