4

重複の可能性:
部分クラスを使用する理由

私は部分クラスを初めて使用するので、なぜそれらを使用するのか、その過程でどのような利点が得られるのかについて、誰かが全体像を教えてくれるかどうか疑問に思っていました。

私がする必要があるのは、データをWindows フォームから複数のテーブル (たとえば5 つのテーブル) に保存することです。そして、コードを他の場所で再利用したいと思います。

DAL クラスを作成しましたが、この部分クラスを実装してデータを保存するにはどうすればよいですか?

事前にご支援いただきありがとうございます..:)

私はこのようなものを作成しました: 使用するのは良いですか?

class clsDAL
    {
        public partial class SaveData
        {
            public void SpClient()
            {

            }
        }

        public partial class SaveData
        {
            public void SpCountry()
            {
            }
        }

        public partial class SaveData
        {
            public void SpDuration()
            {
            }
        }

        public partial class SaveData
        {
            public void SpProfile()
            {
            }
        }

        public partial class SaveData
        {
            public void SpWorkload()
            {
            }
        }
    }
4

3 に答える 3

5

部分クラスは、(大きな) クラスを 2 つ以上の小さなクラスに分割するためのもので、多くの場合、別々のファイルに記述されます。それらが別々のファイルにある必要はありません。次のように実行できます。

public partial class SaveData
{
    public void SpClient()
    {

    }
}

public partial class SaveData
{
    public void SpCountry()
    {

    }
}

同じファイルにあります。しかし、それが意味をなすことはめったにありません。複数のファイルに分けたほうがよいでしょう。

何のために:

基本的にすべてが同じクラスの一部を形成している場合でも、コードを単一のクラスから個別のブロックに分類するのに役立つ場合があります。SpClientファイルに機能がSpClient.csあると、そのファイル内のコードが何をするのかをよりよく理解するのに役立ちます (同様SpCountrySpCountry.cs..

ただし、これが必要になることはめったにありません。特定のケースの 1 つは、WinForms の場合に、VS がデザイナー コードを別designer.csのクラスに自動生成する場合です。Formこれは、アプリケーション ロジックが存在する最も重要なクラスで、重要でないコードの大部分 (おそらく扱うことはないでしょう) を見る必要がないことを意味します。したがって、Formクラスは次のようになります。

public partial class Form1 : Form

これも存在しdesigner.csます。

別の可能な賢い使用法は次のとおりです。

public partial class SaveData : IEquatable<SaveData>
{
    //implement IEquatabale here 
}

public partial class SaveData : IComparable<SaveData>
{
     //implement IComparable here 
}

静的クラスの部分クラスも持つことができます。

static partial class Extensions //in StringExtension.cs
{

}

static partial class Extensions //in MathExtension.cs
{

}

staticクラスの 1 つのキーワードのみが必要です。コンパイラは、この型の他のすべての部分クラスが静的であると想定します。つまり、次のことができます。

static partial class Extensions //in StringExtension.cs
{

}

partial class Extensions //in MathExtension.cs
{
    //which will be static
}

あなたの場合、懸念を異なる部分クラスに分離する特別な理由はありません。1つのクラスでそれを書いたほうがいいです。そして、物事を機能させるにはコードを書かなければなりません..

于 2012-12-29T06:09:42.937 に答える
1

部分クラスは、同じクラスを複数のファイルに分割するのに役立ちます。コードの再利用とは関係ありません。あなたが説明している問題は、フォーム フィールドをデータ ストア (SQL サーバー、xml、ドキュメント データベース (SQL なし) など) のフィールドにマップする必要がある典型的な CRUD 操作です。DAL は素晴らしいスタートです。フォーム データを DTO (データ転送オブジェクト) に保存し、それを DAL に渡してデータを保持するだけです。部分クラスはほとんど役に立たないので気にしないでください。クラスを複数のファイルに分割する必要があり、手に負えないほど大きくなる場合は、クラスがやりすぎていることを意味します。SRP (単一責任の原則) を尊重し、クラスの焦点を絞ってください。幸運を!

于 2012-12-29T05:27:12.953 に答える
1

「partial」キーワードが行うことは、クラス コードを複数のファイルに分散することだけです。整理するのに最適です。そうでなければ、それはクラスのようなものです。

クラスを再利用できます。静的ではないと仮定すると、インスタンス化して個別のオブジェクトにすることができます。静的でアクセス可能な場合は、そのメソッドを呼び出すだけです。

于 2012-12-29T05:22:08.887 に答える