2009-03-04 23 views

答えて

16

partialキーワードは、コード生成ユーティリティで一般的に使用され、開発者が生成されたコードに追加の機能を追加できるようにします。

C#3ではpartialキーワードをメソッドに適用して、生成されたコードのユーザーがジェネレータによって残された空白を埋めるようにすることができます。たとえば、Linq To Sqlデザイナーは、実装されている場合にフレームワークが呼び出すクラスにロジックを追加できるようにする部分的なメソッドを提供しています。ここでの利点は、実装されていない部分メソッドをC#コンパイラが完全に削除するため、実装されていないため、のパフォーマンスがになることはありません。

パーシャルクラスを使用して、非常に大きなクラスを別々のコードファイルに編成することもできますが、この種の使用法は通常、クラスが大きすぎて責任が多すぎるという兆候です。

1

私はいくつかのメソッドがたくさんのコードを必要とするヘルパークラスのパーティション化にこれを使用しています。これは、各ファイルがクラスの機能の一部を処理するだけなので、可読性を維持するための非常に簡単な方法です。

0

LINQ to SQLデザイナーは、マッピングクラス外でカスタムビヘイビア(部分的なメソッド)を分割するために幅広く使用します。つまり、その主な目的はコードジェネレータです。
これが役に立ちます。

1

VBでは、これを使用して、通常のコードを "Option Strict Off"経由でレイトバインディングが必要なコードから分離することができます。

C#では、異常に大きなクラスでのみ使用します。

2

私が考えることができる部分的なキーワードとしては、ネストされたクラスが最適です。 partialキーワードを指定しないと、すべてのネストされたクラスは、そのクラスを含むクラスと同じコードファイルに入れなければなりません。

+0

Oo、素晴らしいアイデア!これは私には決して起こりませんでした。 –

0

私は部分的なクラスとメソッドをLinq2Sqlで常に使用します。そうでなければ、私はUI /コードビハインドクラスの他に何も使用していません。

linq2sqlの部分クラスについて私が気に入っている素晴らしい点の1つは、部分クラスにインターフェイスを継承させることができ、インターフェイスを生成されたクラスにマップすることです。これは、複数のデータプロバイダを持ち、すべてのデータアクセスクラスに同じインタフェースを使用したい場合に最適です。

2

私が見つけた1つの使用方法は、トレースコードやdevログコードなどの実動コードには存在したくないコードです。これを部分クラスに置くことができます。次に、実動ビルドを行うときに、それらの部分集合を含めずにビルドするだけです。コンパイラは、除外された部分集合への呼び出しを自動的に取り除きます。

+0

部分的なメソッドはおそらく、その特定のユースケースではさらに良く機能します。 – JasonTrue

+0

もう1つの良いアイデア - +1 –

+0

@JasonTrue - 部分的な方法もうまくいくでしょう。状況の必要に応じてどちらか一方を使うだけです。 –

0

WPFは部分クラスを広く使用します。 XAMLは、追加できる部分クラスを生成します。

0

一部のクラスで複数の開発者が作業することがわかっている場合、部分クラスを使用してバージョンコントロールでマージンペインを減らしています。たとえば、DALクラスを複数の部分クラスファイルに分割することがよくあります。それらを異なるファイルに置かないと、バージョンctlにチェックインされたときに修正するためにしばらく時間がかかるマージ競合を簡単に取得できます。

クラスが完全に近づくにつれて開発がより混乱しなくなると、部分ファイルが取り除かれます。 VC /マルチリューズの問題をより簡単にするために使用します。

関連する問題