2010-01-16 15 views
11

Duplicar posible:
Most Useful Attributes in C#¿Qué atributos .Net aplican las personas a su código?

siempre siento que me falta la funcionalidad que se puede obtener en .Net mediante la simple aplicación atributos a clases, métodos, propiedades, etc. No ayuda ese intellisense no puede mostrar todos los atributos apropiados ya que normalmente se pueden aplicar en una amplia gama de escenarios.

Aquí hay un par de los atributos me gusta usar:

[DebuggerHidden] - colocar este sobre métodos impide que el depurador de Visual Studio de intervenir para código. Esto es útil si tienes un evento que dispara continuamente e interrumpe tu depuración.

[EditorBrowsable (EditorBrowsableState.Never)] - Ocultar un método de intellisense. No utilizo esto a menudo, pero es útil cuando construyo componentes reutilizables y desea ocultar algunos métodos de prueba o depuración.

Me gustaría ver lo que otros están usando y qué consejos tienen las personas.

+2

+1 Gran pregunta, me gustaría ver algunas respuestas. –

+1

En realidad voy a votar para cerrar porque no es una pregunta real. La respuesta es "todos ellos". Los atributos no fueron creados para no ser usados. –

+2

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

Respuesta

4

Acabo de encontrar este recursos:

 

// 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

Suelo usar [navegable (falso)] y [serializable].

[Navegable (falso)] en la propiedad oculta la propiedad de PropertyGrid.

¿No debería ser esto wiki de la comunidad?

+0

Soy nuevo en este sitio, no he visto la wiki, lo haré ahora. Gracias – Nanook

0
[DebuggerDisplay(....)] 

para definir qué campos de una estructura o clase quiero ver en la pantalla del depurador.

1

Yo realmente como el DebuggerDisplay:

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

Se instruirá VS lo que desea mostrar cuando se cierne sobre el artículo.

2

Tenemos una gran cantidad de código compatible con CLS y otros no, por lo que es claramente una ventaja para nosotros:

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

Esto nos ayuda mucho.

+2

Oh y [ComVisibleAttribute (true)] – mjsabby

0

A veces BindableAttribute es bueno para influir en el comportamiento vinculante de los componentes. Quizás sea útil activar Reflector y buscar "Atributo" y navegar un poco. Depende de tu intención cuáles son útiles.

0

Utilicé los atributos condicionales durante la creación de una aplicación de demostración. Lo hice como una versión completa y suprimí algunas funcionalidades con este tipo de atributos.

Cuestiones relacionadas