最有用的属性

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

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


[DebuggerDisplay]对于在调试过程中将鼠标悬停在类型实例上时可以快速查看Type的自定义输出。 例:

[DebuggerDisplay("FirstName={FirstName}, LastName={LastName}")]
class Customer
{
    public string FirstName;
    public string LastName;
}

这是它在调试器中的外观:

替代文字http://serialize.wordpress.com/files/2008/10/temp.jpg

此外,值得一提的是,具有CacheDuration属性集的[WebMethod]属性可以避免不必要的Web服务方法执行。


在我看来, System.Obsolete是框架中最有用的属性之一。 能够提出有关不再使用的代码的警告是非常有用的。 我喜欢有一种方法可以告诉开发者不应该再使用某些东西,并且有办法解释为什么并指出更好/新的做事方式。

对于调试使用情况, Conditional attribute也非常方便。 它允许您在代码中添加方法以用于调试目的,在您构建发布解决方案时不会进行编译。

然后,我发现很多特定于Web控件的属性都很有用,但这些属性更具体,并且除了我所发现的服务器控件开发之外,没有任何用途。


[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 ++背景通过......感叹

链接地址: http://www.djcxy.com/p/65149.html

上一篇: Most Useful Attributes

下一篇: Serialize a list of objects without the parent tag