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

  • KarnasCamillo

    KarnasCamill

    24 EKİM 2007
  • Tomas N

    Tomas N

    14 Kasım 2010
  • Video-Tutorials.Net

    Video-Tutori

    15 Mart 2011