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

KTm*_*ury 5 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; }
Run Code Online (Sandbox Code Playgroud)

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

A-D*_*ubb 10

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


Isa*_*ker 4

这些称为属性——请参阅MSDN