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

  • jpmkm1

    jpmkm1

    4 NİSAN 2008
  • PomplamooseMusic

    PomplamooseM

    28 HAZİRAN 2008
  • wowchick16

    wowchick16

    17 Mart 2007