2011-01-19 12 views
5

मैंने कस्टम प्रॉपर्टी विशेषता लिखी और इसे मेरी कक्षा में दो गुणों पर सेट किया। अब मैं रनटाइम के दौरान केवल उन्हीं गुणों को प्राप्त करना चाहता हूं जिनके पास यह विशेषता है, संपत्ति के मूल्य के साथ-साथ विशेषता फ़ील्ड के मान प्राप्त करने में सक्षम हो। क्या आप कृपया इस काम के साथ मेरी मदद कर सकते हैं? मदद के लिए धन्यवादमूल्य प्रतिबिंब के साथ सभी गुण प्राप्त करें

+0

मुझे पूरा यकीन है कि यह एक डुप्लिकेट है, लेकिन मुझे कोई नहीं मिला है मैच। मुझे संबंधित मिला [जांच करें कि क्या संपत्ति विशेषता है] (http://stackoverflow.com/questions/2051065/check-if-property-has-attribute) और [कक्षा के उदाहरण के गुणों पर विशेषताओं को ढूंढना] (http://stackoverflow.com/questions/2999035/finding-the-attributes-on-the-properties-of-an-instance-of-a-class)। –

उत्तर

13

यहां एक उदाहरण दिया गया है:

void Main() 
{ 
    var myC = new C { Abc = "Hello!" }; 
    var t = typeof(C); 
    foreach (var prop in t.GetProperties()) 
    { 
     var attr = prop.GetCustomAttributes(typeof(StringLengthAttribute), true).Cast<StringLengthAttribute>().FirstOrDefault(); 
     if (attr != null) 
     { 
      var attrValue = attr.MaximumLength; // 100 
      var propertyValue = prop.GetValue(myC, null); // "Hello!" 
     } 
    } 
} 
class C 
{ 
    [StringLength(100)] 
    public string Abc {get;set;} 
} 
संबंधित मुद्दे