共用方式為


IVsDataProvider.TryCreateObject<TSite> 方法 (Guid, Type, TSite)

嘗試建立指定的 DDEX 支援實體執行個體。DDEX 提供者實作的指定 DDEX,資料來源中放置與指定的站台物件。

命名空間:  Microsoft.VisualStudio.Data.Core
組件:  Microsoft.VisualStudio.Data.Core (在 Microsoft.VisualStudio.Data.Core.dll 中)

語法

'宣告
Function TryCreateObject(Of TSite) ( _
    source As Guid, _
    objType As Type, _
    site As TSite _
) As Object
Object TryCreateObject<TSite>(
    Guid source,
    Type objType,
    TSite site
)
generic<typename TSite>
Object^ TryCreateObject(
    Guid source, 
    Type^ objType, 
    TSite site
)
abstract TryCreateObject : 
        source:Guid * 
        objType:Type * 
        site:'TSite -> Object
JScript 不支援泛型型別或方法。

類型參數

  • TSite
    網站。

參數

  • source
    類型:Guid

    一 DDEX 資料來源識別項或 Empty 沒有指定資料來源的。

  • objType
    類型:Type

    DDEX 支援實體的型別。

  • site
    類型:TSite

    要放置新的 DDEX 支援實體物件的執行個體。

傳回值

類型:Object
由 DDEX 提供者實作,站台與指定的站台物件指定的 DDEX 支援實體執行個體,則為,否則 DDEX 提供者支援它;則為,否則為 nullnull 參考 (即 Visual Basic 中的 Nothing)。

例外狀況

例外狀況 條件
ArgumentNullException

objType 參數為 nullnull 參考 (即 Visual Basic 中的 Nothing)。

DataProviderException

支援實體的新執行個體的具現化時擲回例外狀況,不論是呼叫 CreateInstance 的方式透過反映或透過 DDEX 提供者的 CreateObjectCreateObject 方法失敗的預設或用戶端物件的實作或建立 (如果有的話)。

備註

這個方法會執行各種步驟會使指定的 DDEX 支援實體型別的執行個體。

註冊檢查

如需這項支援實體的資訊,方法會檢查登錄啟動。 它會在提供者的 SupportedObjects 機碼為符合支援實體型別的登錄機碼。 如果非 null DDEX 資料來源傳入方法,它也會尋找這 DDEX 資料來源的子機碼。 如果找到任何索引鍵,它會擷取機碼的預設值。 如果索引鍵值非nullnull 參考 (即 Visual Basic 中的 Nothing) 和非 null,則會假設數值是類別的型別實作支援實體的名稱。 它會從 CodeBase 值開始會擷取限定資訊,,和,則為,如果這是 nullnull 參考 (即 Visual Basic 中的 Nothing),組件值。 CodeBase 值是包含這個註冊型別組件的完整路徑。 組件是否為可由 Common Language Runtime (CLR) 找出和載入組件的完整名稱。

如果支援實體從基礎 IVsDataSupport 介面,唯一目的是傳回 XML 資料流,方法會尋找可能會描述 XML 檔案位置可以傳遞至特定支援實體的基底實作的其他值。 一個例子是標準 DDEX 架構組件中定義的 DataObjectSupport 類別。 方法會先尋找不一定是 XML 檔案完整名稱在磁碟上的 XmlFile 值。 如果這個值存在,方法會尋找可能包含未限定 XmlFile 值路徑的 XmlPath 值。 當您在相同路徑位置時,將 XML 檔案的當地語系化版本的路徑和檔案名稱的分隔是很重要的。 如果 XmlFile 值不存在,方法會尋找識別在組件中的資源名稱中含有 XML 的 XmlResource 值。 從 XmlCodeBase 值開始、然後尋找限定資訊,,,和,則為 nullnull 參考 (即 Visual Basic 中的 Nothing), XmlAssembly 值。 XmlCodeBase 值是包含指定的資源組件的完整路徑。 XmlAssembly 值是 CLR 找出和載入組件的完整名稱。

如果此時決定不在所建立的登錄中沒有足夠的資訊 DDEX 支援實體執行個體,註冊檢查步驟略過。 在這種情況下,回到 IVsDataSourceSpecializerIVsDataProviderObjectFactory 介面的明確實作的方法中,則為,如果遭到 DDEX 提供者實作。 否則,方法會將 codebase 或完整載入適當的組件 (依此順序) 並從組件取得型別。 如果這個處理序找不到適當的型別,則會擲回 DataProviderException

最後,這個型別的執行個體。 如果支援實體從基礎 IVsDataSupport 介面繼承,以及 XML 檔案位置的其他資訊由提供者註冊,這個資訊會被傳遞做為引數傳遞給這個型別的建構函式。 這項資訊會當做 XML 檔案名稱和路徑 (兩個字串),或是以 XML 資源名稱和解析的 Assembly 物件 (字串和 Assembly 物件)。 在後者的情況下,則為,如果組件無法載入,則會擲回 DataProviderException 。 如果其他錯誤,當型別建立執行個體時,或是已建立的型別不實作所需的支援實體型別,則會擲回 DataProviderException

呼叫來源 Specializer 或提供者 Factory 物件

當註冊檢查就無法找到足夠的資訊建立支援實體執行個體時, DDEX 提供者的來源 specializer (如果有的話) 或物件 Factory (以封裝的提供者) 呼叫 CreateObject 方法。 當非空白 DDEX 資料來源傳遞至這個方法時,提供者的來源 specializer (如果有的話) 會先呼叫。 如果這個方法會擲回 NotImplementedException 或不傳回新的執行個體,則呼叫會擲回之提供者的 Object Factory,,如果有的話,也會忽略所有 NotImplementedException 。 對於其他例外狀況,則會擲回 DataProviderException

建立預設的執行個體。

如果物件未由這點建立,這表示 DDEX 提供者未實作支援實體。 不過,如果支援,實體定義預設實作的物件,預設物件執行個體所建立。

注意事項注意事項

在 Visual Studio 2005 的 DDEX 不支援預設的物件實作,因此,預設不會建立物件。

物件已決定位置

DDEX 所有新建立的執行個體不支援使用這個方法可以設置具有三個標準站台物件的實體。 這些物件如下:全域服務提供者物件、建立其 IVsDataProvider 物件和表示特定 DDEX 資料來源的 IVsDataSource 物件,為它建立,如果提供非 null DDEX 資料來源。 執行個體分別設置,只有在新建立的執行個體實作與泛型型別 IServiceProvider、 IVsDataProvider,以及/或 IVsDataSource上的 IVsDataSiteableObject<T> 介面,。

在這些標準站台物件之後,,如果自訂網站物件由呼叫端傳遞,新的執行個體將網站與自訂物件,該物件會實作 IVsDataSiteableObject<T> 介面。

用戶端物件建立

在建立 DDEX 支援實體的最後一個步驟是產生用戶端包裝函式物件實體是否以一個。 這個方法會先檢查支援實體型別完成 DataClientObjectAttribute執行個體。 如果這個執行個體上,相關類別的 ID 識別之物件的執行個體,並建立新的提供者物件傳遞給這個用戶端物件。 在用戶端建立物件後,它們所在與相同的一組標準,並自訂網站物件提供了基礎提供者物件。

範例

下列程式碼示範如何呼叫這個方法建立其中一個標準支援實體。

using System;
using Microsoft.VisualStudio.Data.Core;
using Microsoft.VisualStudio.Data.Services.SupportEntities;

public class DDEX_IVsDataProviderExample10
{
    public static IVsDataConnectionProperties CreateConnectionProperties(
        IVsDataProvider provider)
    {
        return provider.TryCreateObject<IVsDataConnectionProperties>();
    }
}

.NET Framework 安全性

請參閱

參考

IVsDataProvider 介面

TryCreateObject 多載

Microsoft.VisualStudio.Data.Core 命名空間