क्या मैं प्रतिबिंब के माध्यम से एक निजी संपत्ति निर्धारित कर सकता हूं?
public abstract class Entity
{
private int _id;
private DateTime? _createdOn;
public virtual T Id
{
get { return _id; }
private set { ChangePropertyAndNotify(ref _id, value, x => Id); }
}
public virtual DateTime? CreatedOn
{
get { return _createdOn; }
private set { ChangePropertyAndNotify(ref _createdOn, value, x => CreatedOn); }
}
}
मैंने निम्नलिखित कोशिश की है और यह काम नहीं करता है, जहां t
एक प्रकार का प्रतिनिधित्व करता है Entity
:
var t = typeof(Entity);
var mi = t.GetMethod("set_CreatedOn", BindingFlags.Instance | BindingFlags.NonPublic);
मुझे लगता है कि मैं यह कर सकता हूं, लेकिन मैं इसे काम नहीं कर सकता।
2
मुझे पता है कि यह देर हो चुकी है, लेकिन मुझे इस विचार की आवश्यकता थी कि मैं अपना 'क्यों' साझा करूँगा। मुझे कुछ तृतीय-पक्ष सॉफ़्टवेयर में असुविधा को दूर करने की आवश्यकता थी। विशेष रूप से, मैं क्रिस्टल रिपोर्ट ExportToStream विधि का उपयोग कर रहा था। यह विधि जिस तरह से लिखी गई थी, धारा के आंतरिक बफर तक पहुंच की अनुमति नहीं थी। ब्राउज़र को रिपोर्ट भेजने के लिए, मुझे स्ट्रीम को एक नए बफर (100K +) में कॉपी करना होगा, फिर इसे भेजें। स्ट्रीम ऑब्जेक्ट में निजी '_ex प्रयोज्य' क्षेत्र को 'सही' पर सेट करके, मैं प्रत्येक अनुरोध पर 100K + आवंटन को सहेजते हुए, आंतरिक बफ़र को सीधे बाहर भेजने में सक्षम था।
—
रे
क्यों? मान लीजिए कि आपके सभी डोमेन ऑब्जेक्ट पर आपकी Id प्रॉपर्टीज पर प्राइवेट सेटर हैं और आप रिपॉजिटरी टेस्ट्स लागू करना चाहते हैं। फिर केवल अपने रिपॉजिटरी टेस्ट प्रोजेक्ट में आप आईडी प्रॉपर्टी सेट करना चाहते हैं।
—
बाउंउ
एक अन्य उपयोग परिदृश्य: डेटा आयात करते समय "सृजन तिथि" जैसे ऑटो-जेनरेट किए गए फ़ील्ड सेट करना।
—
एविव्स
एक और क्यों मैं बस उत्सुक हूँ अगर यह संभव है। मैं इस सवाल को देख रहा हूं।
—
कालेब माउर