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
.
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))