2012-12-19 12 views
6

मैं एक नया परीक्षक हूँ और विरासत कोड को पढ़ने के दौरान मैं निम्नलिखित दो वर्गों था:.net में "घटक" की "साइट" क्या है?

public class TestCommon : Component 
{ 
    public void Initialize() 
    { 
     var serviceContainer = (IServiceContainer)this.GetService(typeof(TestFramework)); 
     serviceContainer.AddService(typeof(TestCommon), this); 
    } 
} 

public class TestFramework : ISite, IServiceContainer 
{ 
    readonly Hashtable services = new Hashtable(); 
    public TestFramework() 
    { 
     this.AddService(this); 

     var bedrockModuleInstance = (TestCommon)Activator.CreateInstance(typeof(TestCommon)); 
     ((TestCommon)bedrockModuleInstance).Site = this; 
     ((TestCommon)bedrockModuleInstance).Initialize(); 
    } 
} 

मुझे समझ नहीं आता क्यों वर्ग TestCommon के प्रारंभ विधि में, एक GetService कह सकते हैं और किसी भी तरह TestFramework 'GetService वापसी आह्वान किया जाता है? मैंने कंटेनर, घटक और साइट के बारे में एमएसडीएन पढ़कर इसे समझने की कोशिश की, लेकिन साइट के विचार को समझ नहीं सका।

अद्यतन: GetService के कार्यान्वयन पढ़ें, में पाया गया कि घटक के GetService acutally अपनी साइट की GetService लौट मेरे सवाल का जवाब दे दिया।

protected virtual object GetService(Type service) { 
     ISite s = site; 
     return((s== null) ? null : s.GetService(service)); 
    } 
+0

'साइट' को घटक के मालिक के रूप में सोचें, जैसे खिड़की या उस विंडो में प्रदर्शित दृश्य घटक "स्वामित्व" फ़ॉर्म। आगे की पृष्ठभूमि के लिए http://msdn.microsoft.com/en-us/library/0b1dk63b.aspx देखें। –

उत्तर

3

उत्तर मिला। GetService के कार्यान्वयन को पढ़ें, पाया कि घटक का GetService अकसर अपनी साइट के GetService को वापस लौटाता है, मेरे प्रश्न का उत्तर दिया।

protected virtual object GetService(Type service) { 
    ISite s = site; 
    return((s== null) ? null : s.GetService(service)); 
} 
संबंधित मुद्दे