Czy możliwe jest ominięcie następujące ograniczenie:Mijając tablicę statyczną w atrybucie
Tworzenie statycznej readonly tablicę w klasie:
public class A
{
public static readonly int[] Months = new int[] { 1, 2, 3};
}
Następnie przekazać go jako parametr do atrybutu:
public class FooAttribute : Attribute
{
public int[] Nums { get; set; }
FooAttribute()
{
}
}
--- Powiedzmy Box jest własnością klasy A ---
[Foo(Nums = A.Months)]
public string Box { get; set; }
wiem, że to nie będzie kompilować i spowoduje tego błędu:
"An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type".
Czy można to jakoś obejść, aby móc użyć statycznej tablicy? Pytam, ponieważ będzie to znacznie wygodniejsze z punktu widzenia konserwacji, ponieważ mam wiele właściwości.
Z góry dziękuję.
powinien "tylko do odczytu" być konceptualny? – David
Może, ale są [różne] (http://msdn.microsoft.com/en-us/library/acdd6hb7 (v = vs.110) .aspx): Słowo kluczowe readonly różni się od słowa kluczowego const. Pole const można zainicjować tylko na deklaracji pola. Pole tylko do odczytu można zainicjować na deklaracji lub w konstruktorze. Dlatego pola readonly mogą mieć różne wartości w zależności od użytego konstruktora. –