C# には部分クラスの概念があります。これが使用されているのを見た 1 つのインスタンスは、WSDL
s です。Visual Studio はサーバーに接続してサービスを検索し、それに基づいて部分クラスを自動的に生成できます。Visual Studio は、独自のコードを追加できるように、それに一致する空白の部分クラスを提供します。
このアプローチはかなり混乱していると思います。継承よりも部分クラスに利点はありますか?
C# には部分クラスの概念があります。これが使用されているのを見た 1 つのインスタンスは、WSDL
s です。Visual Studio はサーバーに接続してサービスを検索し、それに基づいて部分クラスを自動的に生成できます。Visual Studio は、独自のコードを追加できるように、それに一致する空白の部分クラスを提供します。
このアプローチはかなり混乱していると思います。継承よりも部分クラスに利点はありますか?
部分クラスは、生成されたコードと手動でプログラムされたコードを分離するという特定の問題に対処するために存在します。部分クラスがなければ、プログラマーは生成されたクラスの変更を控えるか、分離を実現するために設計パターンに依存する必要があります。
非常に重要な点の 1 つは、部分クラスの生成された部分に実装があることです。これにより、実装を含まないインターフェースとは区別されます。
ある意味では、これはクラスを抽象化することなく、抽象クラスに似たものにします。サブクラス化せずに機能を拡張および変更することができます。
部分クラス:
同じプロジェクト内の複数のファイルでクラスを定義できます。メソッドを含むファイルを作成したり、プロパティを含む別のファイルを作成したりする場合があります。コンパイル時には、すべてを含む 1 つの大きなファイルを作成するのと同じになります。
継承:
同じプロジェクト内または別のプロジェクトの両方で、既存のクラスの機能を拡張できます。継承により、既存のクラスの機能や機能などを新しいクラスに拡張できます。
合意された部分クラスは、継承よりも、複数のソース ファイル間でクラス定義を分割することに関するものです。
それらの主な理由は、フレームワークが定型コードを生成できるようにするためであり、データ アクセスまたは Web サービス生成用に作成されたビジュアル スタジオによってコードがオーバーライドされることなくメソッドを追加できるようにするためであると私には常に思えました。
私にはいつも、Microsoft の頭がおかしくて怠け者に見えました。
これは、部分クラスの 2 番目の宣言で必要に応じてメソッドを実装する開発者への招待です 大きなクラスを圧縮することにより、アプリケーションをより適切に維持できます。複数のインターフェイスを持つクラスがあり、インターフェイスの実装に応じて複数のソース ファイルを作成できるとします。ソースファイルが部分クラスを持つ実装されたインターフェイスを理解し、維持するのは簡単です。次のコード スニペットを見てみましょう。
public interface IRegister
{
//Register related function
}
public interface ILogin
{
//Login related function
}
//UserRegister.cs file
public partial classUser : IRegister, ILogin
{
//implements IRegister interface
}
//UserLogin.cs file
public partial classUser
{
//implements ILogin interface
}