SORU
21 AĞUSTOS 2008, PERŞEMBE


.Nitelikleri nelerdir?NET:

Onlar, ne iyi gelir nelerdir, ve nasıl kendi öznitelikleri oluşturabilirim?

CEVAP
21 AĞUSTOS 2008, PERŞEMBE


Meta. Nesneler hakkında veri/yöntemleri/özellikleri.

Sipariş özellikleri UI görünmelidir ne kolay kontrol edebiliyorum yani DisplayOrder. bir Öznitelik adı ilan verebilirim örneğin: Sonra öznitelikleri özü ve UI öğeleri uygun şekilde sipariş bir sınıf eklemek ve bazı GUI bileşenleri yazabilirim.

public class DisplayWrapper
{
    private UnderlyingClass underlyingObject;

    public DisplayWrapper(UnderlyingClass u)
    {
        underlyingObject = u;
    }

    [DisplayOrder(1)]
    public int SomeInt
    {
        get
        {
            return underlyingObject .SomeInt;
        }
    }

    [DisplayOrder(2)]
    public DateTime SomeDate
    {
        get
        {
            return underlyingObject .SomeDate;
        }
    }
}

Someİnt her zaman özel benim GUİ bileşenleri ile çalışırken SomeDate önce görüntülenen böylece sağlanması.

Ancak, onları doğrudan kodlama ortamı dışında en sık kullanılan görürsünüz. Örneğin Windows Tasarımcısı özel yapılmış nesneler ile başa çıkmak için nasıl biliyor bu kadar kapsamlı bir şekilde onları kullanır. Gibi yani BrowsableAttribute kullanarak:

[Browsable(false)]
public SomeCustomType DontShowThisInTheDesigner
{
    get{/*do something*/}
}

Tasarımcısının Properties penceresinde kullanılabilir özellikler bu listeye tasarım anında örneğin söyler.

Sanaolabilirayrıca kod nesil için bunları kullanmak, ön-derleme işlemleri (Post-Sharp gibi) veya çalışma zamanı Yansıması gibi işlemler.Yayarlar. Örneğin, şeffaf kodunu oluşturan her bir arayıp kez sarılmış bu profil için bir kod bit yazabilirsiniz. "Opt-out" belirli yöntemler üzerine yerleştirdiğiniz bir öznitelik). bu zamanlama olabilir

public void SomeProfilingMethod(MethodInfo targetMethod, object target, params object[] args)
{
    bool time = true;
    foreach (Attribute a in target.GetCustomAttributes())
    {
        if (a.GetType() is NoTimingAttribute)
        {
            time = false;
            break;
        }
    }
    if (time)
    {
        StopWatch stopWatch = new StopWatch();
        stopWatch.Start();
        targetMethod.Invoke(target, args);
        stopWatch.Stop();
        HandleTimingOutput(targetMethod, stopWatch.Duration);
    }
    else
    {
        targetMethod.Invoke(target, args);
    }
}

Onları ilan etmek kolay, sadece Öznitelik devralan bir sınıf olun.

public class DisplayOrderAttribute : Attribute
{
    private int order;

    public DisplayOrderAttribute(int order)
    {
        this.order = order;
    }

    public int Order
    {
        get { return order; }
    }
}

Ve özniteliği kullandığınızda unutmayın ihmal soneki "" derleyici sizin için katacak. özelliği olabilir

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • RomanAtwood

    RomanAtwood

    18 Kasım 2009
  • Shameless Maya

    Shameless Ma

    24 Mayıs 2012
  • TechBalance

    TechBalance

    12 HAZİRAN 2011