2010-01-16 4 views
11

Можно создать дубликат:
Most Useful Attributes in C#Какие атрибуты .Net применяются к их коду?

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

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

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

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

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

+2

+1 Отличный вопрос, хотелось бы увидеть некоторые ответы. –

+1

Я на самом деле собираюсь голосовать, чтобы не задавать вопрос. Ответ: «все они». Атрибуты не создавались, чтобы не использоваться. –

+2

dup? http://stackoverflow.com/questions/144833/most-useful-attributes-in-c –

ответ

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

Я обычно использую [Browsable (ложь)] и [Сериализуемый].

[Доступно для просмотра (false)] Недвижимость скрывает собственность от PropertyGrid.

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

+0

Я новичок на этом сайте, я не смотрел вики, я сейчас. Спасибо – Nanook

0
[DebuggerDisplay(....)] 

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

1

Я действительно как DebuggerDisplay:

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

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

2

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

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

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

+2

Oh и [ComVisibleAttribute (true)] – mjsabby

0

Иногда BindableAttribute приятно влиять на поведение связывания компонентов. Возможно, полезно запустить рефлектор и найти «Атрибут» и немного посмотреть. Это зависит от вашего намерения, которое полезно.

0

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

Смежные вопросы