SORU
7 Temmuz 2010, ÇARŞAMBA


Neden "ondalık" geçerli bir öznitelik parametresi türü değil mi?

Gerçekten inanılmaz ama gerçek. Bu kod çalışmaz:

[AttributeUsage(AttributeTargets.Property|AttributeTargets.Field)]
public class Range : Attribute
{
    public decimal Max { get; set; }
    public decimal Min { get; set; }
}

public class Item
{
    [Range(Min=0m,Max=1000m)]  //compile error:'Min' is not a valid named attribute argument because it is not a valid attribute parameter type 
    public decimal Total { get; set; }  
}

Bu çalışır:

[AttributeUsage(AttributeTargets.Property|AttributeTargets.Field)]
public class Range : Attribute
{
    public double Max { get; set; }
    public double Min { get; set; }
}

public class Item
{
    [Range(Min=0d,Max=1000d)]
    public decimal Total { get; set; }  
}

Ondalık olmasa TAMAM neden bana kim söyleyecek.

CEVAP
7 Temmuz 2010, ÇARŞAMBA


Bu CLR bir kısıtlama. Sadece ya da ilkel sabitler, diziler ilkel öznitelik olarak kullanılabilir parametreleri. Sebebi bu yüzden mi bir öznitelik tamamen kodlanmış olmalıdır meta. Bu daha farklı. IL kodlu olan yöntem gövdesi. Meta verileri kullanarak sadece ciddi bir şekilde kısıtlar kullanılabilecek değerler kapsamında. CLR geçerli sürümünde, meta veri değerleri ile sınırlıdır ilkel, boş ve diziler (bir küçük kaçırmış ilkel bir).

JaredPar this cevap alınmış.

Temel bir tip olmasa da ondalıklar ilkel türü ve dolayısıyla olamaz engelleyen temsil meta öznitelik bir parametre olmaktan.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ciaran Blumenfeld

    Ciaran Blume

    20 NİSAN 2009
  • ColdfusTion

    ColdfusTion

    3 Aralık 2007
  • Shantanu Sood

    Shantanu Soo

    3 Kasım 2008