[C#] ऑब्जेक्ट्स को एट्रिब्यूट कन्स्ट्रक्टर में कैसे पास करें


Answers

पिछले पोस्टर के रूप में उल्लेख किया गया, विशेषता तर्कों में उपयोग किए जाने वाले प्रकार काफी गंभीर रूप से प्रतिबंधित होते हैं (जाहिर है, क्योंकि उनके मूल्यों को सीधे असेंबली मेटाडाटा ब्लॉब में क्रमबद्ध करने की आवश्यकता है)।

उस ने कहा, आप संभवतः एक ऐसा समाधान बना सकते हैं जो टाइपफ्स का उपयोग करता है, क्योंकि ये इस्तेमाल किया जा सकता है।

उदाहरण के लिए :

[PropertyValidation(typeof(NullOrEmptyValidatorScheme))]
public string Name { get; private set; }

यह वाक्यविन्यास बिल्कुल कानूनी है। यह कोड जो आपके गुणों को पढ़ता है, आपको मान्यकर्ता प्रकार प्राप्त करने के लिए, सत्यापनकर्ता का एक नया उदाहरण बनायें (यह वैलिएटर प्रकारों पर लगाए गए वैद्यकों के कैश को भी बनाए रख सकता है, यदि उपयुक्त हो - यह एक बहुत ही सामान्य तकनीक है), और फिर इसे खोलें ।

Question

मैं ऑब्जेक्ट्स को एट्रिब्यूट कन्स्ट्रक्टर में पास करने का प्रयास कर रहा हूं:

[PropertyValidation(new NullOrEmptyValidatorScheme())]
public string Name { get; private set; }

इस विशेषता के साथ निर्माता:

 public PropertyValidationAttribute(IValidatorScheme validator) {
      this._ValidatorScheme = validator;
    }

कोड संकलन नहीं करेगा। ऊपर से एक ऑब्जेक्ट को एक विशेषता में कैसे पारित कर सकता हूं?

संपादित करें: हाँ, NullOrEmptyValidatorScheme लागू करता है IValidatorScheme।

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