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 也有属性类。其他oop语言也可以有。

于 2012-12-16T19:30:45.790 回答