2009-05-11 16 views
5

मैं एक संपत्ति पर रखे गए सभी कस्टम विशेषताओं को इकट्ठा करने के लिए तैयार हूं। वहाँ एक ही प्रकार संपत्ति करने के लिए आवंटित की एक से अधिक गुण हैं, लेकिन जब उन्हें इकट्ठा करने, जिसके परिणामस्वरूप संग्रह केवल विशिष्ट प्रकार का पहला गुण शामिल हैं:AllowMultiple संपत्ति विशेषताओं के साथ काम नहीं करता है?

गुण वर्ग

[AttributeUsage(System.AttributeTargets.Property, 
       AllowMultiple = true)] 

public class ConditionAttribute : Attribute{...} 

उपयोग:

[ConditionAttribute("Test1")] 
[ConditionAttribute("Test2")] 
[ConditionAttribute("Test3")] 
public Color BackColor{get; set;} 
अब

जब वस्तु 'मान' जिसका वर्ग प्रोप "BackColor" शामिल हैं के सभी प्रॉप्स के माध्यम से पाशन:

foreach (PropertyDescriptor property in TypeDescriptor.GetProperties(value)) 
{ 
    foreach (Attribute attribute in property.Attributes) 
    { ... } 
    .... 
} 

संग्रह संपत्ति। गुण में केवल "कंडीशनएट्रिब्यूट" प्रकार का एक विशेषता है: "test1" वाला एक। दूसरों अनदेखी कर रहे हैं ;-(

तो AllowMultiple संपत्ति के लिए काम नहीं करता है गुण पहले से?

धन्यवाद

हेनरिक

उत्तर

0

हाँ, यह कार्य करता है। सुनिश्चित नहीं हैं कि क्यों यह के माध्यम से काम नहीं करता है PropertyDescriptors

तुम हमेशा कर सकते हैं:। Attribute.GetCustomAttributes(methodInfo, typeof(ConditionAttribute))

17

अनुसार, इस मैं को a post on MSDN प्रॉपर्टीडिस्क्रिप्टर क्लास के हिस्से के रूप में डिज़ाइन द्वारा किया गया है।

हालांकि, अगर आप वास्तव में समस्या अपने कस्टम विशेषता में TypeId अधिभावी द्वारा (धन्यवाद Ivan from Mindscape को यह ओर इशारा करते हुए के लिए) का समाधान कर सकते हैं:

public override object TypeId 
{ 
    get 
    { 
    return this; 
    } 
} 
+0

एमवीसी में एक कस्टम सत्यापन प्रमाणीकरण का उपयोग करते समय मुझे एक समान समस्या का सामना करना पड़ा; यह मेरी समस्या हल हो गई। –

0

एक और तरीका है इस बदलाव करने,

[ConditionAttribute (" टेस्ट 1, टेस्ट 2, टेस्ट 3 ")] सार्वजनिक रंग बैककोलर {प्राप्त करें; सेट;}

और अपने सत्यापन कोड में,

मंद lstProperties() lstPropertyes में स्ट्रिंग के रूप में स्ट्रिंग = _ChkColors.Split (",") प्रत्येक strProp के लिए के रूप में 'अपने मान्यता ' लौट अगला

संबंधित मुद्दे