Ist es möglich, die folgende Einschränkung zu umgehen:in Attribut statisches Array Passing
Erstellen einer statischen Nur-Lese-Array in einer Klasse:
public class A
{
public static readonly int[] Months = new int[] { 1, 2, 3};
}
Dann geben sie als Parameter ein Attribut:
public class FooAttribute : Attribute
{
public int[] Nums { get; set; }
FooAttribute()
{
}
}
--- sagen wir Box ist eine Eigenschaft der Klasse A ---
[Foo(Nums = A.Months)]
public string Box { get; set; }
Ich weiß, dass dies nicht kompilieren und zu diesem Fehler führt:
"An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type".
Ist es möglich, um diesen irgendwie gehen zu können, um die statische Array benutzen? Ich frage, da dies viel wartungsfreundlicher sein wird, da ich viele Eigenschaften habe.
Vielen Dank im Voraus.
sollte "readonly" konzeptionell "const" sein? – David
Vielleicht, aber sie sind [anders] (http://msdn.microsoft.com/en-us/library/acdd6hb7 (v = vs.110) .aspx): Das Schlüsselwort readonly unterscheidet sich vom Schlüsselwort const. Ein const-Feld kann nur bei der Deklaration des Feldes initialisiert werden. Ein schreibgeschütztes Feld kann entweder an der Deklaration oder in einem Konstruktor initialisiert werden. Daher können schreibgeschützte Felder abhängig vom verwendeten Konstruktor unterschiedliche Werte haben. –