Web Log di Adrian Florea

"You know you've achieved perfection in design, not when you have nothing more to add, but when you have nothing more to take away." Antoine de Saint-Exupery
posts - 440, comments - 2715, trackbacks - 3944

My Links

Archives

Post Categories

Image Galleries

.RO Blogs

.RO People

.RO Sites

Blogs

Furls

Links

vinCitori

Attributi enumerati

Una specie di wrapper si potrebbe utilizzare quando si ha bisogno di un "attributo enumerato"

using System;

public enum FooEnum
{
  Foo1,
  Foo2
}

public class FooAttribute: Attribute
{
  private FooEnum _foo;
  public FooEnum Foo
  {
    get
   
{
      return _foo;
    }
  }

  public FooAttribute(FooEnum foo)
  {
    _foo = foo;
  }

  public static readonly FooAttribute Foo1 = new FooAttribute(FooEnum.Foo1);
  public static readonly FooAttribute Foo2 = new FooAttribute(FooEnum.Foo2);
}

Da notare i due campi statici e in sola lettura,  Foo1 e Foo2, che corrispondono ai valori del tipo enumerato. Fanno la ricerca dell'attributo, più usabile: 

IList attributes = typeof(Bar).GetCustomAttributes(false);
if (attributes.Contains(FooAttribute.Foo2))
{
  //
}

dove, per esempio, abbiamo:

[Foo(FooEnum.Foo2)]
class Bar
{
  //
}

Un esempio nel framework? L'attributo System.ComponentModel.DesignerSerializationVisibilityAttribute.

Print | posted on martedì 8 marzo 2005 23:56 | Filed Under [ Pattern Dappertutto ]

Powered by:
Powered By Subtext Powered By ASP.NET