Późne powiązanie w rozwiązaniach pakietu Office

Niektóre typy w modelach obiektów aplikacja pakietu Office lications udostępniają funkcje dostępne za pośrednictwem funkcji późnego powiązania. Na przykład niektóre metody i właściwości mogą zwracać różne typy obiektów w zależności od kontekstu aplikacja pakietu Office licacji, a niektóre typy mogą uwidaczniać różne metody lub właściwości w różnych kontekstach.

Dotyczy: informacje w tym temacie dotyczą projektów na poziomie dokumentu i projektów dodatków VSTO. Zobacz Funkcje dostępne według aplikacja pakietu Office lication i typu projektu.

Projekty Visual Basic, w których opcja Strict jest wyłączona, a projekty Visual C#, które są przeznaczone dla programu .NET Framework 4 lub .NET Framework 4.5, mogą współpracować bezpośrednio z typami korzystającymi z tych funkcji opóźnionych powiązań.

Niejawne i jawne rzutowanie wartości zwracanych przez obiekt

Wiele metod i właściwości w podstawowych zestawach międzyoperacyjnych (PIA) pakietu Microsoft Office zwraca Object wartości, ponieważ mogą zwracać kilka różnych typów obiektów. Na przykład właściwość zwraca wartość , ActiveSheet ponieważ jej wartość zwracana może być obiektem Worksheet lub Chart w zależności od tego, czym jest aktywny Object arkusz.

Gdy metoda lub właściwość zwraca Objectwartość , należy jawnie przekonwertować (w Visual Basic) obiekt na poprawny typ w projektach Visual Basic, w których właściwość Option Strict jest włączona. Nie trzeba jawnie rzutować Object zwracanych wartości w projektach Visual Basic, w których opcja Strict jest wyłączona.

W większości przypadków dokumentacja referencyjna zawiera listę możliwych typów zwracanej wartości elementu członkowskiego zwracającego element Object. Konwertowanie lub rzutowanie obiektu włącza funkcję IntelliSense dla obiektu w Edytorze kodu.

Aby uzyskać informacje o konwersji w visual basic, zobacz Niejawne i jawne konwersje (Visual Basic) i CType funkcji (Visual Basic).

Przykłady

W poniższym przykładzie kodu pokazano, jak rzutować obiekt do określonego typu w projekcie Języka Visual Basic, w którym jest włączona opcja Strict . W tym typie projektu należy jawnie rzutować Cells właściwość na Rangeobiekt . W tym przykładzie wymagany jest projekt programu Excel na poziomie dokumentu z klasą arkusza o nazwie Sheet1.

Dim castRange As Excel.Range = CType(Globals.Sheet1.Cells(1, 1), Excel.Range)

W poniższym przykładzie kodu pokazano, jak niejawnie rzutować obiekt do określonego typu w projekcie Visual Basic, w którym opcja Strict jest wyłączona lub w projekcie Visual C#, który jest przeznaczony dla programu .NET Framework 4. W tych typach projektów Cells właściwość jest niejawnie rzutowy na Rangeobiekt . W tym przykładzie wymagany jest projekt programu Excel na poziomie dokumentu z klasą arkusza o nazwie Sheet1.

Excel.Range dynamicRange = Globals.Sheet1.Cells[1, 1];

Dostęp do elementów członkowskich, które są dostępne tylko za pośrednictwem późnego powiązania

Niektóre właściwości i metody w usłudze Office PIA są dostępne tylko za pośrednictwem późnego powiązania. W projektach Visual Basic, w których opcja Strict jest wyłączona lub w projektach Visual C#, które są przeznaczone dla programu .NET Framework 4 lub .NET Framework 4.5, możesz użyć funkcji późnego powiązania w tych językach, aby uzyskać dostęp do elementów członkowskich powiązanych z opóźnieniem. W projektach Języka Visual Basic, w których jest włączona opcja Strict , należy użyć odbicia w celu uzyskania dostępu do tych elementów członkowskich.

Przykłady

W poniższym przykładzie kodu pokazano, jak uzyskać dostęp do elementów członkowskich z opóźnieniem w projekcie Języka Visual Basic, w którym opcja Strict jest wyłączona lub w projekcie Visual C#, który jest przeznaczony dla programu .NET Framework 4. W tym przykładzie jest dostępna właściwość Nazwa z opóźnieniem okna dialogowego Otwieranie pliku w programie Word. Aby użyć tego przykładu ThisDocument , uruchom go z klasy lub ThisAddIn w projekcie programu Word.

dynamic dialog = Application.Dialogs[Word.WdWordDialog.wdDialogFileOpen];
dialog.Name = "Testing";
dialog.Show();
MessageBox.Show(dialog.Name);

W poniższym przykładzie kodu pokazano, jak używać odbicia w celu wykonania tego samego zadania w projekcie Języka Visual Basic, w którym jest włączona opcja Strict .

Dim dlg As Word.Dialog = Application.Dialogs(Word.WdWordDialog.wdDialogFileOpen)
Dim dlgType As Type = GetType(Word.Dialog)

' Set the Name property of the dialog box.
dlgType.InvokeMember("Name", _
    Reflection.BindingFlags.SetProperty Or _
        Reflection.BindingFlags.Public Or _
        Reflection.BindingFlags.Instance, _
    Nothing, dlg, New Object() {"Testing"}, _
    System.Globalization.CultureInfo.InvariantCulture)

' Display the dialog box.
dlg.Show()

' Show the Name property.
MessageBox.Show(dlgType.InvokeMember("Name", _
    Reflection.BindingFlags.GetProperty Or _
        Reflection.BindingFlags.Public Or _
        Reflection.BindingFlags.Instance, _
    Nothing, dlg, Nothing, _
    System.Globalization.CultureInfo.InvariantCulture))