2009-08-25 8 views
5

सी # में जावा की डिफ़ॉल्ट (पैकेज) पहुंच के बराबर क्या है? क्या कोई है? क्या किसी विशेष नामस्थान तक पहुंच प्रतिबंधित करने के लिए वैसे भी है?सी # में जावा की डिफ़ॉल्ट (पैकेज) पहुंच के बराबर क्या है?

समस्या:

मैं कुछ तरीकों के उपयोग को सीमित करने के लिए सिर्फ मेरी NUnit परीक्षण करने की कोशिश कर रहा हूँ - मैं तरीकों पैकेज का उपयोग कर रहे हैं और एक ही पैकेज में परीक्षण होने से इस करना होगा JUnit में लेकिन src/main/java के बजाय src/test/java के अंतर्गत। मैं सी # में कुछ समान कैसे प्राप्त कर सकता हूं?

नोट: मैं विधियों को internal नहीं बना सकता क्योंकि मेरे परीक्षण एक अलग असेंबली में हैं - जैसा कि न्यूटिट सम्मेलन है - या है ना?

उत्तर

22

सी # में पैकेज या नेमस्पेस स्तर का उपयोग नहीं है - केवल असेंबली स्तर - जिसे internal एक्सेस के रूप में भी जाना जाता है।

हालांकि, आप अपनी विधियों को आंतरिक बना सकते हैं और InternalsVisibleTo विशेषता का उपयोग अपनी इकाई परीक्षण असेंबली में बेनकाब करने के लिए कर सकते हैं।

आप इस पोस्ट और this one पर read के लिए उपयोगी पा सकते हैं।

1

ऐसा कुछ भी नहीं है जो सटीक समकक्ष है। internal कीवर्ड करीब है, लेकिन यह नामस्थान द्वारा नहीं, असेंबली द्वारा सीमित है। (DLL, exe)

कुछ आंतरिक के साथ टैग जाता है, यह केवल कोड द्वारा एक ही विधानसभा से पहुंचा जा सकता

+1

... या अन्य असेंबली में कोड द्वारा आंतरिक आंतरिक वस्तुओं तक पहुंचने की स्पष्ट अनुमति आंतरिक VISibleTo का उपयोग करके दी गई है। – adrianbanks

0

आप उन्हें आंतरिक बनाकर केवल अपने विधानसभा में दिखाई दे सकता है तरीकों को प्रतिबंधित कर सकता है

1

एक और तरीका है जो काफी अलग है। आप partial classes का उपयोग कर सकते हैं:

  1. फ़ाइल # 1 = परीक्षण के तहत कोड। सामान्य की तरह लिखा गया है लेकिन 'आंशिक' कीवर्ड
  2. फ़ाइल # 2 = यूनिट परीक्षण में, एक नेस्टेड क्लास है जो वास्तविक इकाई परीक्षण है।

नेस्टेड कक्षाओं में उनके मूल वर्ग (निजी विधियों सहित) में सबकुछ तक पहुंच है। आपकी बिल्ड प्रक्रिया (शायद एमएसबिल्ड या एनएएनटी स्क्रिप्ट) के हिस्से के रूप में, अंतिम असेंबली के हिस्से के रूप में परीक्षणों को संकलित न करें, और कोड-अंडर-टेस्ट ठीक काम करेगा।

संबंधित मुद्दे