这个C#功能是否有名称,它有什么作用?

时间:2011-08-26 20:05:55

标签: c# oop

我是C#新手。在开源中看到这段代码

public class Staff : BusinessObjectBase
{

    /// <summary>
    /// Column: StaffID(Identity)(Primary Key), Allow DBNull=False
    /// </summary>
    [DataMap("StaffID", IsIdentity=true, IsReadOnly=true, IsKey=true)]
    public System.Nullable<System.Int32> StaffID { get; set; }

    /// <summary>
    /// Column: TeamID, Allow DBNull=True
    /// </summary>
    [DataMap("TeamID", AllowDBNull=true)]
    public System.Nullable<System.Int32> TeamID { get; set; }

线条以方括号开头,它们在做什么?引用父对象的属性?如果是这样,为什么他们会成功?有这种编码风格的名称吗? 谢谢!

5 个答案:

答案 0 :(得分:10)

这一切都属于一种称为元编程的概念。 .NET中有一本名为Metraprogramming的书(Manning)。您基本上是使用数据注释您的代码,以后可以通过反射通过其他代码在运行时解释这些数据。这在Java和Ruby中也很流行。您将在ASP.NET MVC,WCF等中看到它。它还引入了另一种称为声明性编程的编程实践。你说“你想做什么”,让其他东西决定“如何”。它在函数式编程语言中非常重要,而且只是编程。请参阅此文章,了解如何解析属性。 How do I GetCustomAttributes?

答案 1 :(得分:4)

这些被称为属性 - 请参阅MSDN

答案 2 :(得分:4)

阅读有关C# Attributes的所有信息。它们基本上是将其自身附加到其他属性/方法/类/代码元素的类的实例。在这种情况下,简单地说,您定义了一个名为StaffID的{​​{1}}类型的新字段,该字段附加了System.Nullable<...>个对象。

答案 3 :(得分:3)

Data Annotations to Customize Data Classes

http://msdn.microsoft.com/en-us/library/dd901590(v=vs.95).aspx

答案 4 :(得分:3)

他们是attributes