Condividi tramite


Procedura: utilizzo GetGlobalService

Talvolta può essere necessario ottenere un servizio da una finestra degli strumenti o da un contenitore di controlli che non sono stati collocati, o è stato collocati con un provider di servizi che non è al servizio desiderato. Ad esempio, potrebbe essere necessario scrivere nel log attività dall'interno di un controllo. Per ulteriori informazioni su questi e altri scenari, vedere Procedura: Risoluzione dei servizi.

È possibile ottenere la maggior parte dei servizi di Visual Studio chiamando il metodo statico di GetGlobalService .

GetGlobalService si basa su un provider di servizi memorizzato nella cache inizializzato la prima volta il package VS derivato da Package è collocato. È necessario accertarsi che questa condizione viene soddisfatta, altrimenti essere preparati per un servizio null.

Fortunatamente, il funzionamento di GetGlobalService correttamente per la maggior parte dei casi.

  • Se un VSPackage fornisce un servizio noto solo a un altro package VS, il package VS che richiede il servizio viene situato prima che il package VS che fornisce il servizio venga caricato.

  • Se una finestra degli strumenti viene creata da un package VS, il package VS è collocato prima che la finestra degli strumenti sia creato.

  • Se un contenitore di controlli è ospitato da una finestra degli strumenti creata da un package VS, il package VS è collocato prima che il contenitore di controlli venga creato.

Per ottenere un servizio dall'interno di una finestra degli strumenti o un contenitore di controlli

  • Inserire il codice nel costruttore, nella finestra degli strumenti, o nel contenitore di controlli:

    Dim log As IVsActivityLog = TryCast(Package.GetGlobalService(GetType(SVsActivityLog)), IVsActivityLog)
    If log Is Nothing Then 
        Return 
    End If
    
    IVsActivityLog log = Package.GetGlobalService(typeof(SVsActivityLog)) as IVsActivityLog;
    if (log == null) return;
    

    Questo codice ottiene un servizio di SVsActivityLog e ne viene eseguito il cast in un'interfaccia di IVsActivityLog , che può essere utilizzata per scrivere nel log attività. Per un esempio, vedere Procedura: utilizzare il registro attività.

Vedere anche

Attività

Procedura: Risoluzione dei servizi

Concetti

Concetti di base del servizio

Altre risorse

servizi