Nasıl bir öznitelik oluşturucu nesneleri geçirmek için
Aşağıdaki gibi Öznitelikleri bir kurucu nesneleri geçirmek için çalışıyorum
[PropertyValidation(new NullOrEmptyValidatorScheme())]
public string Name { get; private set; }
Bu kurucu nitelik:
public PropertyValidationAttribute(IValidatorScheme validator) {
this._ValidatorScheme = validator;
}
Kodu derlemek olmaz. Nasıl bir öznitelik içine bir nesne olarak yukarıda geçebilir miyim?
EDİT: Evet NullOrEmptyValidatorScheme uygular İValidatorScheme.
Hata: hata CS0182: bağımsız değişken sabit bir ifade olmalıdır öznitelik, tür ifade veya dizi oluşturma Bir niteliğin ifadesi parametre türü.
CEVAP
Öznitelikleri değerleri basit türleri ile sınırlıdır; Örneğin, TEMEL sabitleri (dizeleri de dahil olmak üzere) ve typeof
... new
ya da diğer daha karmaşık kod kullanamıyorum. Kısacası; bunu yapamazsınız. Bu verebilirsinyazınama
[PropertyValidation(typeof(NullOrEmptyValidatorScheme)]
yani PropertyValidation
decimal Activator.CreateInstance
nesne oluşturmak için kod içinde ** 9, ve kullanım alır. Ideal sadece dize içten (AssemblyQualifiedName
) saklamak gerektiğini unutmayın.
Gelen ECMA 334v4:
§24.1.3 parametre türleri bağlıyor
Konumsal türleri ve adlı öznitelik bir sınıf için parametreleri bu sınırlıöznitelik parametresi türleriolan:,
- Aşağıdaki türlerinden biri:
bool
,byte
,char
, , , , , *,string
*short
long
int
float
15.- Türü
object
.- Türü
System.Type
.- Bir numaralama türü, kamu erişilebilirlik vardır sağlanan ve hangi iç içe olduğu tip (varsa) ayrıca kamu erişilebilirlik.
- Yukarıda tek boyutlu diziler türleri.
ve
§24.2 şartname bağlıyor
...
E
bir ifade öznitelik bağımsız değişkeni ifade eğer aşağıdaki ifadelerden doğru:
E
türü bir özellik. parametre türü (§24.1.3).- Derleme zamanı, E değeri olabilir çözülmüş birini için
- Sabit bir değer.
- Sattığınız ifade (§14.5.11) belirten bir genel olmayan bir , kapalı oluşturulmuş türü Ya da ilişkisiz genel (§25.5.2) türü (§25.5).
- Tek boyutlu bir dizi bir öznitelik bağımsız değişkeni-ifadeler.
Nasıl nesnelerin öznitelik dayalı Pyth...
Nasıl C fonksiyonları nesneleri geçirm...
Nasıl bir toplu iş dosyası komut satır...
Nasıl düzgün Excel, birlikte çalışabil...
bir öğe veri-öznitelik değeri için bir...