[c#] विशेषता में स्थिर सरणी गुजर रहा है



Answers

नहीं, मूल रूप से

आप, हालांकि, विशेषता subclass सकता है और इसका मतलब है कि, अर्थात्

class AwesomeFooAttribute : FooAttribute {
    public AwesomeFooAttribute() : FooAttribute(A.Months) {}
}

या:

class AwesomeFooAttribute : FooAttribute {
    public AwesomeFooAttribute() {
        Nums = A.Months;
    }
}

और [AwesomeFoo] बजाय उसे सजाने के बजाय यदि आप FooAttribute को देखने के लिए प्रतिबिंब का उपयोग करते हैं, तो यह अपेक्षा के अनुरूप काम करेगा:

[AwesomeFoo]
static class Program
{
    static void Main()
    {
        var foo = (FooAttribute)Attribute.GetCustomAttribute(
            typeof(Program), typeof(FooAttribute));
        if (foo != null)
        {
            int[] nums = foo.Nums; // 1,2,3
        }
    }
}

आप शायद A अंदर यह घोंसला कर सकते हैं, ताकि आप इसमें सजग हो रहे हैं:

[A.FooMonths]

या इसी के समान

Question

क्या निम्न प्रतिबंधों को दूर करना संभव है:

एक कक्षा में एक स्थिर रीडोनली सरणी बनाएँ:

public class A
{
    public static readonly int[] Months = new int[] { 1, 2, 3};
}

फिर एक विशेषता के रूप में इसे एक पैरामीटर के रूप में पास करें:

public class FooAttribute : Attribute
{
    public int[] Nums { get; set; }

    FooAttribute()
    {
    }
}

--- हम कहते हैं कि बॉक्स एक वर्ग की संपत्ति है ---

[Foo(Nums = A.Months)]
public string Box { get; set; }

मुझे पता है कि यह संकलन नहीं करेगा और इस त्रुटि में परिणाम देगा:

"एक विशेषता तर्क एक निरंतर अभिव्यक्ति, प्रकार का अभिव्यक्ति या एक विशेषता पैरामीटर प्रकार की सरणी निर्माण अभिव्यक्ति होना चाहिए"।

क्या यह किसी भी तरह से स्थैतिक सरणी का उपयोग करने में सक्षम होना संभव है? मैं पूछ रहा हूँ क्योंकि यह अधिक सुविधाजनक रखरखाव-वार होगा, क्योंकि मेरे पास कई गुण हैं

अग्रिम में धन्यवाद।




Links