È possibile aggirare la seguente limitazione:Passando matrice statica in attributo
Creare una matrice sola lettura statica in una classe:
public class A
{
public static readonly int[] Months = new int[] { 1, 2, 3};
}
quindi farla passare come un parametro per un attributo:
public class FooAttribute : Attribute
{
public int[] Nums { get; set; }
FooAttribute()
{
}
}
--- Diciamo Box è una proprietà di classe a ---
[Foo(Nums = A.Months)]
public string Box { get; set; }
So che questo non verrà compilato e si tradurrà in questo errore:
"An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type".
E 'possibile andare in giro questo in qualche modo essere in grado di utilizzare la matrice statica? Lo chiedo dato che questo sarà molto più conveniente in termini di manutenzione, dal momento che ho molte proprietà.
Grazie in anticipo.
dovrebbe "readonly" essere "const" concettualmente? – David
Forse, ma sono [diversi] (http://msdn.microsoft.com/en-us/library/acdd6hb7 (v = vs.110) .aspx): la parola chiave readonly è diversa dalla parola chiave const. Un campo const può essere inizializzato solo alla dichiarazione del campo. Un campo di sola lettura può essere inizializzato o alla dichiarazione o in un costruttore. Pertanto, i campi di sola lettura possono avere valori diversi a seconda del costruttore utilizzato. –