के माध्यम से ओवरराइड संपत्ति से विशेषता प्राप्त करना मैं किसी संपत्ति पर परिभाषित विशेषता प्राप्त करने के लिए GetCustomAttributes()
का उपयोग करने का प्रयास कर रहा हूं। मुद्दा यह है कि संपत्ति एक ओवरराइड एक है और मैं अभिव्यक्ति से ओवरराइड किए गए निकालने का तरीका नहीं निकाल सकता। मैं केवल बेस क्लास के लिए कैसे काम कर सकता हूं।एक लिनक्स अभिव्यक्ति
यहाँ कुछ कोड
public class MyAttribute : Attribute
{
//...
}
public abstract class Text
{
public abstract string Content {get; set;}
}
public class Abstract : Text
{
[MyAttribute("Some Info")]
public override string Content {get; set;}
}
अब मैं MyAttribute
सार वर्ग से बाहर निकलने की कोशिश कर रहा हूँ है। लेकिन मुझे इसे Expression
के माध्यम से प्राप्त करने की आवश्यकता है। यह मैं क्या उपयोग किया गया है है:
Expression<Func<Abstract, string>> expression = c => c.Content;
Expression exp = expression.Body;
MemberInfo memberType = (exp as MemberExpression).Member;
var attrs = Attribute.GetCustomAttributes(memberType, true);
दुर्भाग्य atts
के रूप में खाली समाप्त होता है। समस्या यह है कि menberType
Abstract.Content
कक्षा के बजाय Text.Content
के लिए समाप्त होता है। तो जब मुझे गुण मिलते हैं, तो यह कुछ भी नहीं देता है।
दूसरे प्रश्न के लिंक के लिए धन्यवाद। मैंने कुछ इसी तरह की खोज की लेकिन उसे वह नहीं मिला। – Jero
आपके द्वारा दिया गया समाधान वह काम है जो अब तक उपयोग कर रहा है, उसके लिए कुछ स्वतंत्र समर्थन प्राप्त करने के लिए अब बहुत अच्छा है :-) धन्यवाद – Jero