1

重複の可能性:
.NET:属性とは何ですか?

次のコードで角かっこはどういう意味ですか。

public class LoginModel
{
    [Required]
    [Display(Name = "User name")]
    public string UserName { get; set; }

    [Required]
    [DataType(DataType.Password)]
    [Display(Name = "Password")]
    public string Password { get; set; }

    [Display(Name = "Remember me?")]
    public bool RememberMe { get; set; }
}

他の質問でそれらが属性であることを読みましたが、それらがどのように機能するのかわかりません。なぜこれらがこのクラスに表示されるのですか?そして、これらはC#でのみ使用されますか?

4

2 に答える 2

3

基本的な考え方は、コードをマークアップすることです。働き方は「あなた」次第

いくつかのクラスへのデータ入力用にいくつかのフォームを作成していて、必須のものに対してヒントを表示し、それらに対して検証を行いたいとします。これを行うコードが、フォームを作成しているすべてのクラスに共通であるようにしたいとします。クラスの誰かに新しい必須プロパティを追加するたびに、そのルーチンを変更したくないことは間違いありません。

リフレクションを使用すると、オブジェクトをルーチンに渡し、そのすべてのプロパティのリストを取得し、[Required] 属性を持つすべてのものを見つけて、インスタンスをテストして空白ではないことを確認し、それらのリストを返すことができます。クラスについて何でも知っています。それがどれであるかではなく、プロパティがある場合はいくつあるか、それらがどのタイプであるかではありません。唯一の共有コードは RequiredAttribute クラスです。

それを学ぶ最も簡単な方法は、独自のものを定義して使用することです。

Google .Net System.Attribute、例はたくさんあります。

于 2012-12-16T19:52:08.380 に答える
2

それらはと呼ばれAttributesます。を見てくださいMSDN

属性は、抽象クラスSystem.Attributeから(直接的または間接的に)継承するクラスによって定義されます。コード要素に属性を付加するには、コード要素の前に属性のタイプ名を角かっこで囲んで指定します。


そして、これらはC#でのみ使用されますか?

いいえ。Javaにも属性クラスがあります。他のオブジェクト指向言語も持つことができます。

于 2012-12-16T19:30:45.790 に答える