Какие атрибуты .Net люди применяют к их коду?

Возможный дубликат:
Наиболее полезные атрибуты на С#

Я всегда чувствую, что мне не хватает функциональности, которую можно получить в .Net, просто применяя атрибуты к классам, методам, свойствам и т.д. Это не помогает тому, что intellisense не может отображать все соответствующие атрибуты, поскольку они обычно могут применяться в широкий спектр сценариев.

Вот несколько атрибутов, которые мне нравятся:

[DebuggerHidden] - размещение этих методов не позволяет отладчику Visual Studio входить в код. Это полезно, если у вас есть событие, которое постоянно срабатывает и прерывает вашу отладку.

[EditorBrowsable (EditorBrowsableState.Never)]. Скрыть метод от intellisense. Я не часто это использую, но это удобно при создании повторно используемых компонентов, и вы хотите скрыть некоторые методы тестирования или отладки.

Я хотел бы посмотреть, что другие используют и какие советы есть у людей.

Ответ 1

Я только что нашел эти ресурсы:

 

// 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() { }

Ответ 2

У нас есть много CLS-совместимого кода, а некоторые нет, поэтому это явно плюс для нас:

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

Это очень помогает нам.

Ответ 3

Обычно я использую [Browsable (false)] и [Serializable].

[Browsable (false)] по свойствам скрывает свойство из PropertyGrid.

Разве это не сообщество-вики?

Ответ 4

Я действительно люблю DebuggerDisplay:

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

Он проинструктирует VS, что отображать при наведении указателя мыши на элемент.

Ответ 5

[DebuggerDisplay(....)]

чтобы определить, какие поля структуры или класса я хочу видеть на дисплее отладчика.

Ответ 6

Иногда BindableAttribute приятно влиять на поведение привязки компонентов. Возможно, полезно запустить Reflector и найти "Attribute" и немного просмотреть. Это зависит от вашего намерения, которое полезно.

Ответ 7

Я использовал условные атрибуты во время создания демонстрационного приложения. Я сделал его как полную версию и подавил некоторые функции, используя эти типы атрибутов.