3

頻度の変換クラスを作成していますが、チームが必要に応じて変換を追加できるようにしたいと考えていました。

Frequency myFrequency = new Frequency(100, MHz);
double value = myFrequency.InKhz();

クラスのソース コードは将来のプロジェクトに含まれないため、クラスを部分クラスにするか、追加の変換を拡張する必要があります。例として、GHz への変換を追加します。

myFrequency.InGHz()

これを進める最善の方法はどれですか?

更新:ランドルフォの回答を読んだ後、拡張メソッドのアプローチを使用します。時間が許せば、拡張機能はベース コードに組み込まれますが、他のチーム メンバーが更新されたアセンブリを待つ必要がなかったので、次のタスクに少し早く移行できるようになりました。

4

3 に答える 3

3

元のソースがない限り、部分クラスは機能しません。開発者がそのソースにアクセスすることを拒否している場合、唯一の代替手段は拡張メソッドを使用することです。

そうは言っても、ライブラリを新しい追加で更新するプロセスが必要なだけかもしれません。彼らはまれになるようです。

于 2009-07-22T17:43:48.610 に答える
1

拡張メソッド。制限はありません。部分メソッドはアセンブリ内でのみ使用できますが、拡張メソッドはどこでも宣言できます。

于 2009-07-22T17:45:13.367 に答える
0

これをコンパイルせずに拡張可能にしたい場合は、おそらく別の変換クラスを作成する必要があります。これにより、実行時に変換を指定し、何らかの形式の辞書に保存できますが、残念ながら、入力していたものと同じ「組み込み」の言語感覚は得られません。

それ以外の場合は、おそらく拡張メソッドが最適なオプションですが、新しい変換を追加するたびに、再コンパイル + 新しいライブラリが必要になります。

于 2009-07-22T17:45:55.173 に答える