2012-07-06 20 views
6

में निजी एक्सेसर्स जहां तक ​​मुझे पता है कि विजुअल स्टूडियो 2012 निजी एक्सेसर्स का समर्थन नहीं करेगा। क्या आप मुझे संभावित विकल्पों पर कुछ इंफोस दे सकते हैं? PrivateObject.Invoke() मेरे लिए सबसे अच्छा समाधान नहीं है।विजुअल स्टूडियो 2012

अग्रिम धन्यवाद!

उत्तर

7

अपने सदस्यों को "आंतरिक" के रूप में चिह्नित करें और InternalsVisibleTo विशेषता का उपयोग करें। उपयोग करने में आसान और कोई प्रकार की सुरक्षा समस्या नहीं है।

+0

मैं इसे इस तरह से पहले निजी eAccessors शुरू किए गए थे किया है। Thanx! – llasarov

+0

मुझे यह दिलचस्प लगता है कि .NET Framework असेंबली में से कई रिफ्लेक्टर में InternalsVisibleTo विशेषताएँ दिखाते हैं। – bryanbcook

+0

ऐसा लगता है कि नकली ढांचे के साथ कोई समस्या है। आप InternalsVisible सही ढंग से सेट करने के साथ भी आंतरिक कक्षाओं को शर्मिंदा नहीं कर सकते हैं। PrivateObject.Invoke वास्तव में एक विकल्प नहीं है, या तो। अफसोस की बात है, एक्सेसर्स के लिए समर्थन हटाने में, उन्होंने एक ऐसा तरीका हटा दिया जो एक आंतरिक वर्ग को कम करने के लिए काम करेगा। – Finster

0

शायद यह पोस्टिंग Home-made Private Accessor for Visual Studio 2012+ आपको अपना निजी एक्सेसर बनाने में मदद करेगी।

सादर,

स्टीफन

+2

एमएसडीएन फोरम में एक्सेल मेयर द्वारा कमांड लाइन टूल Publicize.exe (http://msdn.microsoft.com/en-us/library/dd569957%28v=vs.100%29.aspx) के लिए एक संकेत मिला (http: //social.msdn.microsoft.com/Forums/en-US/015e1ac7-acf3-4d83-ae0c-734c8957cde4/how-to-create-private-accessors-in-vs-2012?forum=vsunittest)। इसे वीएस 2012 और वीएस 2013 (अल्टीमेट) में मिला। .NET 4.0 और .NET 4.5 के लिए काम किया, लेकिन Windows Store ऐप के लिए नहीं। % प्रोग्राम फ़ाइलें (x86)% \ Microsoft Visual Studio 11.0 \ Common7 \ IDE देखें। उपकरण एक डीएल बनाता है जिसे आपके यूनिट परीक्षण प्रोजेक्ट द्वारा उपयोग किया जा सकता है। खुद को एक्सेसर्स लिखने से बेहतर ;-) – Stefan

0

मैं गतिशील निजी Accessor विशेषता यह है कि nuget पैकेज Chaining Assertion for MSTest का हिस्सा है उपयोग शुरू किया और मैं इसके साथ नहीं बल्कि खुश हूँ। एक मजबूत टाइपिंग खो देता है लेकिन कम से कम वाक्यविन्यास अभी भी पठनीय है। यह गतिशील सुविधा के साथ काम करता है। अन्य परीक्षण ढांचे के लिए पैकेज भी हैं। परीक्षण कोड इस तरह दिखता है:

var target = CreateMyObjectUnderTest(); 
dynamic dynamicTarget = target.AsDynamic(); 
Assert.AreEqual("abc", dynamicTarget.MyPrivateProperty); 
Assert.AreEqual("xyz", dynamicTarget.PrivateMethod(123)); 
संबंधित मुद्दे