1

「バディクラス」という用語が「別のファイルの部分クラスに注釈を追加するにはどうすればよいですか」などの質問に対する「答え」として使用されているのを見てきましたが、これらの答えは、バディクラス何であるかを知っていることを前提としており、コード例はこれがどのように/なぜ機能するかを理解しています。

C# のバディ クラスとは何か、プロパティに注釈を追加するなど、既存のクラスをどのように/なぜ変更できるのかについての簡単な説明がわかりませんでした。

4

1 に答える 1

5

「バディ クラス」は必ずしも C# 固有のものではありませんが、.Net では、自動生成されたクラスを拡張して属性を追加するために使用される一種のパターンまたはテクニック (ハック) としてより一般的に見られると思います。これらは、関連付けられたクラスまたはメタデータ クラスと呼ばれることもあります。命名規則では、MD (メタ データ用) をバディ クラスに追加して、1 つとして識別できるようにします。理由については、よく自動生成されたコードは、行った変更を上書きします。関連付けられたクラスはそれを回避する方法である可能性があり、カスタム メタ データ (検証属性など) を保持できます。自動生成され、便利に部分としてマークされたクラスが1つあります(自動生成クラスを拡張するために、部分修飾子が実際に導入された理由だと思います)。属性を適用したいので、それを含む別のクラスを作成します。

VS がエンティティの 1 つに対してこれを生成する場合:

public partial class AutoGeneratedClass
{
    public string SomeData { get; set; }
}

そして、それを拡張し、これを作成できるカスタム メタ データを追加します。

[MetadataType(typeof(NotAutoGeneratedClassMD))]
public partial class AutoGeneratedClass
{
}

public class NotAutoGeneratedClassMD
{
    [DisplayName("This is some data")]
    public string SomeData { get; set; }
}

短縮版:

内容: クラスを関連付けて、自動生成されたクラスをカスタム メタデータで拡張する方法

理由: 自動生成されたクラスへの変更が再度生成されたときに上書きされないようにします。

個人的に私はファンではありませんが、それは別の話です:)

于 2016-07-14T11:51:01.543 に答える