2011-05-25 17 views
7

क्या विलय विधानसभा आंतरिक कीवर्ड का दायरा बदलती है?असेंबली विलय और आंतरिक कीवर्ड का उपयोग

मैं काफी हद तक निश्चित हूं कि इसका कोई असर नहीं होगा (या कम से कम एक जो इससे कोई फर्क नहीं पड़ता) क्योंकि अंतिम असेंबली का संदर्भ देने वाले किसी भी व्यक्ति को आंतरिक कक्षाओं तक पहुंचने में सक्षम नहीं होगा।

यह वास्तविक दुनिया मूल्य के साथ एक काल्पनिक प्रश्न हो सकता है, लेकिन मैं फिर भी उत्सुक था।

संपादित करें: मेरा मतलब आईएलएमर्ज के साथ है, स्रोत कोड को एक एकल बिल्ड करने योग्य असेंबली में संयोजित नहीं करता है।

+0

आपका क्या मतलब है की पेशकश विधानसभाओं का विलय करके? आपका मतलब है (IlMerge] (http://www.microsoft.com/downloads/en/details.aspx?familyid=22914587-b4ad-4eae-87cf-b14ae6a939b0&displaylang=en)? तकनीकी रूप से, आप नहीं कर सकते। आप विलय कर सकते हैं असेंबली मॉड्यूल एक एकल प्रबंधित पीई 32 छवि में। या शायद आप स्रोत कोड स्तर पर हैं? – sehe

+0

@sehe अद्यतन प्रश्न। मेरा मतलब आईएलएमर्ज के साथ है, स्रोत कोड नहीं। –

उत्तर

10

हाँ एक बार असेंबली विलय हो जाने के बाद, उन्हें एक-दूसरे के आंतरिक वर्गों तक पहुंच प्राप्त होती है। यह विशेष रूप से असेंबली के बीच आंतरिक कॉल में सार्वजनिक कॉल करने के लिए कुछ obfuscators द्वारा लीवरेज किया जाता है और फिर उन्हें अधिक सुरक्षित बनाने के लिए obfuscate। संदर्भ: SmartAssembly

एक तरफ ध्यान दें पर, ILMerge उपयोग कर, आप/भली कमांड लाइन स्विच जो आंतरिक प्राथमिक विधानसभा, जो अंत उपयोगकर्ता की आंखों से सार्वजनिक इंटरफेस लेकिन निकालता है के अलावा अन्य विधानसभाओं में सभी सार्वजनिक कक्षाओं कर देगा का उपयोग कर सकते अभी भी असेंबली सामान्य रूप से काम करते हैं।

+2

+1 बहुत अच्छा जवाब – sehe

3

मान लीजिए कि आप पूर्ण-विश्वास के साथ नहीं चल रहे हैं, आंतरिक प्रकारों के साथ अंतिम असेंबली में विलय किए गए किसी भी प्रकार अब आंतरिक प्रकार के सार्वजनिक सदस्यों तक पहुंच पाएंगे।

तो दिया विधानसभा एक:

public class MyClassA { ... } 

और विधानसभा बी:

internal class MyClassB { ... } 

MyClassA MyClassB की जनता के सदस्यों को प्रतिबिंबित करने के लिए अनुमति नहीं है। अगर वे एक ही असेंबली में विलय कर दिए गए थे, तो MyClassA को ऐसी अनुमति मिल सकती है।

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