Question

i ai un procédé dans un Usercontrol avec ce code

        public bool GetActiveDocument(ref EnvDTE.Document doc)
    {
        try
        {
            var dte = (DTE2)GetService(typeof(SDTE));
            doc = dte.ActiveDocument;
            if (doc == null)
            {
                MessageBox.Show("There isn't any file open in the Code Editor");
                return false;
            }
            else return true;
        }
        catch (Exception)
        {
            MessageBox.Show("There was a problem getting the actual file, verify if it is open");
            return false;
        }
    }

Je veux déplacer cette méthode à une classe « Proxy » qui va agir comme intermédiaire entre Visual Studio et mon application. Le problème est que seul le retour GetService document actif correctement s'il est appel à l'intérieur du contrôle. Quand je propose que la méthode de la classe Proxy, GetService n'a pas de définition. Je recherche que cette méthode vient de ComponentModel.Component, donc je l'ai fait la dérive de la classe Proxy de Component. Tout se compile bien, mais toujours quand je demande le document actif une exception se produit. chose que je que je ne comprends pas bien comment fonctionne la méthode GetService (). S'il vous plaît aider.

Était-ce utile?

La solution

Component.GetService invoque IServiceProvider.GetService sur l'instance ISite affecté à la propriété du site du composant (en supposant qu'il y en a un). Vous ne devriez pas besoin de faire votre instance proxy Hériter de Component, mais vous devrez donner accès au ISite / IServiceProvider.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top