人们将哪些.Net属性应用于他们的代码?

时间:2010-01-16 11:07:08

标签: .net attributes

  

可能重复:
  Most Useful Attributes in C#

我总觉得我缺少可以在.Net中获得的功能,只需将属性应用于类,方法,属性等。智能感知无法显示所有适当的属性,因为它们通常可以应用于各种各样的情景。

以下是我喜欢使用的几个属性:

[DebuggerHidden] - 将此方法放在方法上会阻止Visual Studio调试器插入代码。如果您有一个不断触发并中断调试的事件,这将非常有用。

[EditorBrowsable(EditorBrowsableState.Never)] - 隐藏来自intellisense的方法。我不经常使用它,但它在构建可重用组件时很方便,并且你想要隐藏一些测试或调试方法。

我想看看其他人在使用什么以及人们有什么提示。

7 个答案:

答案 0 :(得分:4)

我刚刚找到了这些资源:

// The DebuggerDisplayAttribute can be a sweet shortcut to avoid expanding
// the object to get to the value of a given property when debugging. 
[DebuggerDisplay("ProductName = {ProductName},ProductSKU= {ProductSKU}")] 
public class Product 
{ 
    public string ProductName { get; set; } 
    public string ProductSKU { get; set; } 
}

// This attribute is great to skip through methods or properties 
// that only have getters and setters defined.
[DebuggerStepThrough()] 
public virtual int AddressId 
{ 
    get { return _AddressId;}     
    set 
    { 
        _AddressId = value;   
        OnPropertyChanged("AddressId"); 
    } 
}

// The method below is marked with the ObsoleteAttribute. 
// Any code that attempts to call this method will get a warning.
[Obsolete("Do not call this method.")]
private static void SomeDeprecatedMethod() { }

// similar to using a combination of the DebuggerHidden attribute, which hides
// the code from the debugger, and the DebuggerStepThrough attribute, which tells
// the debugger to step through, rather than into, the code it is applied to.
[DebuggerNonUserCode()]
private static void SomeInternalCode() { }

答案 1 :(得分:2)

我们有很多符合CLS的代码而有些代码没有,所以它对我们来说显然是个好处:

[assembly:CLSCompliant(true)]
[CLSCompliant(true)]

这对我们有很大的帮助。

答案 2 :(得分:1)

我通常使用 [可浏览(假)] [可序列化]

属性中的

[可浏览(错误)] 会从PropertyGrid中隐藏属性。

这不应该是社区维基吗?

答案 3 :(得分:1)

我非常喜欢DebuggerDisplay

[DebuggerDisplay("Count = {count}")]
class MyHashtable
{
    public int count = 4;
}

它将指示VS将鼠标悬停在项目上时显示的内容。

答案 4 :(得分:0)

[DebuggerDisplay(....)]

定义我想在调试器显示中看到的结构或类的哪些字段。

答案 5 :(得分:0)

有时 BindableAttribute 很好地影响组件的绑定行为。 也许有助于启动Reflector并搜索“属性”并稍微浏览一下。这取决于你的意图哪些是有用的。

答案 6 :(得分:0)

我使用了条件属性   在创建演示应用程序期间。我将其作为完整版本并使用这些类型的属性来抑制某些功能。