Frage

Ich habe eine Methode in einem Usercontrol mit diesem 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;
        }
    }

Ich mag diese Methode zu einer „Proxy“ Klasse bewegen, der als Vermittler zwischen Visual Studio und meiner Anwendung handeln wird. Das Problem ist, dass GetService nur das aktive Dokument korrekt zurück, wenn es Anruf innerhalb der Kontrolle ist. Wenn ich diese Methode der Klasse Proxy bewegen, hat GetService nicht Definition. Ich suche, dass diese Methode von ComponentModel.Component kommt, so dass ich die Proxy-Klasse abgeleitet von Komponenten hergestellt. Alles kompiliert OK, aber immer, wenn ich für das aktive Dokument stelle eine Ausnahme auftritt. Ich, was ich bin nicht verstehen gut, wie funktioniert das GetService () -Methode. Bitte Hilfe bei diesem.

War es hilfreich?

Lösung

Component.GetService ruft IServiceProvider.GetService auf der ISite Instanz auf die Website der Komponenteneigenschaft zugewiesen (vorausgesetzt, es ist eins). Sie sollten nicht brauchen, um Ihre Proxy-Instanz, vererben Komponente, aber Sie geben müssen, um es auf die ISite / IServiceProvider zugreifen zu können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top