2012-12-19 10 views
6

Jestem nowy tester i podczas czytania starszych kod miałem dwie następujące klasy:co to jest "witryna" "komponentu" w .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(); 
    } 
} 

ja nie rozumiem, dlaczego w klasie metody TestCommon za Initialize, można nazwać getService i wrócić jakoś getService w TestFramework” jest wywoływany? Próbowałem to zrozumieć, czytając MSDN o kontenerze, komponencie i witrynie, ale nie mogłem zrozumieć idei witryny.

Aktualizacja: Czytaj realizację getService, uznał getService tego składnika acutally powrotu swojej stronie za getService, odpowiedział na moje pytanie.

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

Wyobraź sobie "Witryna" jako właściciela komponentu, taką jak okno lub formularz "będący właścicielem" wizualnego komponentu wyświetlanego w tym oknie. Zobacz http://msdn.microsoft.com/en-us/library/0b1dk63b.aspx dla dalszego tła. –

Odpowiedz

3

Znaleziono odpowiedź. Zapoznaj się z implementacją GetService, stwierdziłeś, że GetService tego składnika zwraca wyniki swojej witryny GetService, odpowiedział na moje pytanie.

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