我知道属性非常有用。有一些预定义的属性,例如[Browsable(false)],它允许您在财产选项卡中隐藏财产。下面是一个解释属性的好问题:.NET中的属性是什么?

您在项目中实际使用的预定义属性(及其名称空间)是什么?


当前回答

我使用最多的属性是与XML序列化相关的属性。

XmlRoot

Xml元素

XmlAttribute

在进行任何快速而肮脏的XML解析或序列化时非常有用。

其他回答

[TypeConverter(typeof(ExpandableObjectConverter))]

告诉设计器展开财产,这些属性是(控件的)类

[Obfuscation]

指示混淆工具对程序集、类型或成员执行指定的操作。(尽管通常使用程序集级别[Assembly:ObfuscateAssemblyAttribute(true)]

我最近一直在使用[DataObjectMethod]。它描述了方法,因此您可以将类与ObjectDataSource(或其他控件)一起使用。

[DataObjectMethod(DataObjectMethodType.Select)] 
[DataObjectMethod(DataObjectMethodType.Delete)] 
[DataObjectMethod(DataObjectMethodType.Update)] 
[DataObjectMethod(DataObjectMethodType.Insert)] 

更多信息

如果我要进行代码覆盖率爬网,我认为这两个将是最好的:

 [Serializable]
 [WebMethod]

在我的脑海中,这里是一个快速列表,大致按使用频率排序,列出了我在一个大型项目中实际使用的预定义属性(约50万个LoC):

标志,可串行化,WebMethod,COMVisible,TypeConverter,Conditional,ThreadStatic,Obsolete,InternalsVisibleTo,DebuggerStepThrough。

[Flags]非常方便。语法糖是肯定的,但还是相当不错的。

[Flags] 
enum SandwichStuff
{
   Cheese = 1,
   Pickles = 2,
   Chips = 4,
   Ham = 8,
   Eggs = 16,
   PeanutButter = 32,
   Jam = 64
};

public Sandwich MakeSandwich(SandwichStuff stuff)
{
   Console.WriteLine(stuff.ToString());
   // ...
}

// ...

MakeSandwich(SandwichStuff.Cheese 
   | SandwichStuff.Ham 
   | SandwichStuff.PeanutButter);
// produces console output: "Cheese, Ham, PeanutButter"

Leppie指出了一些我没有意识到的东西,这反而挫伤了我对这个属性的热情:它不指示编译器允许位组合作为枚举变量的有效值,编译器允许这一点用于枚举。我的C++背景显示通过。。。叹气