Share via


Office çözümlerinde geç bağlama

Office uygulaması lications nesne modellerindeki bazı türler, geç bağlama özellikleri aracılığıyla kullanılabilen işlevler sağlar. Örneğin, bazı yöntemler ve özellikler Office uygulaması lication bağlamlarına bağlı olarak farklı nesne türleri döndürebilir ve bazı türler farklı bağlamlarda farklı yöntemler veya özellikler ortaya çıkarabilir.

Şunlar için geçerlidir: Bu konudaki bilgiler belge düzeyi projeler ve VSTO Eklenti projeleri için geçerlidir. Bkz. Office uygulaması ve proje türüne göre kullanılabilen özellikler.

Option Strict'in kapalı olduğu Visual Basic projeleri ve .NET Framework 4 veya .NET Framework 4.5'i hedefleyen Visual C# projeleri, bu geç bağlama özelliklerini kullanan türlerle doğrudan çalışabilir.

Nesne dönüş değerlerinin örtük ve açık ataması

Microsoft Office birincil birlikte çalışma derlemelerindeki (PIA) birçok yöntem ve özellik, birkaç farklı nesne türü döndürebildiğinden değer döndürür Object . Örneğin, ActiveSheet etkin sayfanın ne olduğuna bağlı olarak dönüş değeri veya WorksheetChart nesnesi olabileceğinden özelliği bir Object döndürür.

Bir yöntem veya özellik döndürdüğündeObject, Visual Basic projelerinde Option Strict'in açık olduğu nesneyi açıkça doğru türe dönüştürmeniz gerekir (Visual Basic'te). Seçenek Katı'nın kapalı olduğu Visual Basic projelerinde dönüş değerlerini açıkça atamanız Object gerekmez.

Çoğu durumda başvuru belgelerinde, döndüren bir üye Objectiçin dönüş değerinin olası türleri listelenir. Nesnesinin dönüştürülmesi veya yayınlanması, Kod Düzenleyicisi'ndeki nesne için IntelliSense'i etkinleştirir.

Visual Basic'te dönüştürme hakkında bilgi için bkz . Örtük ve açık dönüştürmeler (Visual Basic) ve CType işlevi (Visual Basic).

Örnekler

Aşağıdaki kod örneğinde, Option Strict'in açık olduğu Visual Basic projesinde bir nesnenin belirli bir türe nasıl atanacağı gösterilmektedir. Bu tür bir projede, özelliğini açıkça öğesine Rangeatamanız Cells gerekir. Bu örnek, adlı Sheet1bir çalışma sayfası sınıfına sahip belge düzeyinde bir Excel projesi gerektirir.

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

Aşağıdaki kod örneği, Bir nesneyi, Option Strict'in kapalı olduğu bir Visual Basic projesinde veya .NET Framework 4'i hedefleyen bir Visual C# projesinde belirli bir türe örtük olarak atamayı gösterir. Bu tür projelerde Cells özelliği örtük olarak bir Rangeöğesine yayınlanır. Bu örnek, adlı Sheet1bir çalışma sayfası sınıfına sahip belge düzeyinde bir Excel projesi gerektirir.

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

Yalnızca geç bağlama aracılığıyla kullanılabilen erişim üyeleri

Office PIA'larındaki bazı özellikler ve yöntemler yalnızca geç bağlama yoluyla kullanılabilir. Option Strict'in kapalı olduğu Visual Basic projelerinde veya .NET Framework 4 veya .NET Framework 4.5'i hedefleyen Visual C# projelerinde, geç bağlanan üyelere erişmek için bu dillerdeki geç bağlama özelliklerini kullanabilirsiniz. Option Strict'in açık olduğu Visual Basic projelerinde, bu üyelere erişmek için yansıma kullanmalısınız.

Örnekler

Aşağıdaki kod örneğinde, Option Strict'in kapalı olduğu bir Visual Basic projesinde veya .NET Framework 4'i hedefleyen bir Visual C# projesinde geç bağlanan üyelere nasıl erişileceği gösterilmektedir. Bu örnek, Word'de Dosya Aç iletişim kutusunun geç bağlanan Name özelliğine erişir. Bu örneği kullanmak için bir Word projesindeki ThisDocument veya ThisAddIn sınıfından çalıştırın.

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

Aşağıdaki kod örneğinde, Option Strict'in açık olduğu bir Visual Basic projesinde aynı görevi gerçekleştirmek için yansımanın nasıl kullanılacağı gösterilmektedir.

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