我是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; }
线条以方括号开头,它们在做什么?引用父对象的属性?如果是这样,为什么他们会成功?有这种编码风格的名称吗? 谢谢!
答案 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。