2009-02-12 7 views
2

Y at-il une différence pratique en termes d'effets sur le modèle de composants entre:InitializeComponent dans les deux constructeurs ou dans un avec l'héritage du constructeur?

class MyComponent : Component { 
    public MyComponent() { 
     InitializeComponent(); 
    } 

    public MyComponent(IContainer container) { 
     container.Add(this); 
     InitializeComponent(); 
    } 
} 

et:

class MyComponent : Component { 
    public MyComponent() { 
     InitializeComponent(); 
    } 

    public MyComponent(IContainer container) : this() { 
     container.Add(this); 
    } 
} 

et sinon, pourquoi Microsoft choisit la première méthode pour leur code généré concepteur ? Editer: Ce que je veux dire, est-ce qu'il y aura des effets secondaires sur le changement d'ordre entre l'initialisation du composant et son ajout au conteneur?

Répondre

1

L'ordre d'exécution diffère. Dans

public MyComponent(IContainer container) { 
    container.Add(this); 
    InitializeComponent(); 
} 

InitializeComponent() est exécuté aprèscontainer.Add(), alors qu'ici

public MyComponent(IContainer container) : this() { 
    container.Add(this); 
} 

container.Add() est exécuté après InitializeComponent()

+2

Mais cela fait-il une différence en termes d'effets sur le modèle de composant? J'aurais probablement dû être plus clair à ce sujet. –

0

Je crois que l'ordre d'appel sera différent entre les deux. Je crois en la seconde, on appelle ceci() d'abord, ensuite le contenu de la méthode. Cela signifie que InitializeComponent() sera appelé avant container.Add.

Même si cela ne fait pas une énorme différence, c'est quand même une différence.

Questions connexes