DataClientObjectAttribute 類別
指定不應該直接傳回 DDEX 支援實體執行個體給用戶端。 相反地,應該使用基礎提供者物件互動的用戶端包裝函式物件傳回它們。
繼承階層架構
Object
Attribute
Microsoft.VisualStudio.Data.Core.DataClientObjectAttribute
命名空間: Microsoft.VisualStudio.Data.Core
組件: Microsoft.VisualStudio.Data.Core (在 Microsoft.VisualStudio.Data.Core.dll 中)
語法
'宣告
<AttributeUsageAttribute(AttributeTargets.Class Or AttributeTargets.Interface)> _
Public NotInheritable Class DataClientObjectAttribute _
Inherits Attribute
[AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Interface)]
public sealed class DataClientObjectAttribute : Attribute
[AttributeUsageAttribute(AttributeTargets::Class|AttributeTargets::Interface)]
public ref class DataClientObjectAttribute sealed : public Attribute
[<Sealed>]
[<AttributeUsageAttribute(AttributeTargets.Class|AttributeTargets.Interface)>]
type DataClientObjectAttribute =
class
inherit Attribute
end
public final class DataClientObjectAttribute extends Attribute
DataClientObjectAttribute 類型會公開下列成員。
建構函式
名稱 | 描述 | |
---|---|---|
![]() |
DataClientObjectAttribute | DataClientObjectAttribute 初始化類別的新執行個體,並指定類別 ID. |
回頁首
屬性
名稱 | 描述 | |
---|---|---|
![]() |
ClassId | 取得識別用戶端物件類別型別的類別 ID。 |
![]() |
TypeId | 在衍生類別中實作時,取得這個 Attribute 的唯一識別項。 (繼承自 Attribute)。 |
回頁首
方法
名稱 | 描述 | |
---|---|---|
![]() |
Equals | 基礎架構。 傳回數值,表示這個執行個體是否等於指定的物件。 (繼承自 Attribute)。 |
![]() |
GetHashCode | 傳回這個執行個體的雜湊碼。 (繼承自 Attribute)。 |
![]() |
GetType | 取得目前實例 Type 的屬性。 (繼承自 Object)。 |
![]() |
IsDefaultAttribute | 在衍生類別中覆寫時,表示這個執行個體的值是否為衍生類別的預設值。 (繼承自 Attribute)。 |
![]() |
Match | 在衍生類別中覆寫時,會傳回值,表示這個執行個體是否等於指定物件。 (繼承自 Attribute)。 |
![]() |
ToString | 傳回代表目前物件的字串。 (繼承自 Object)。 |
回頁首
明確介面實作
名稱 | 描述 | |
---|---|---|
![]() ![]() |
System#Runtime#InteropServices#_Attribute#GetIDsOfNames | 將一組名稱對應至一組對應的分派識別項 (Dispatch Identifier)。 (繼承自 Attribute)。 |
![]() ![]() |
System#Runtime#InteropServices#_Attribute#GetTypeInfo | 擷取物件的型別資訊,可以用來取得介面的型別資訊。 (繼承自 Attribute)。 |
![]() ![]() |
System#Runtime#InteropServices#_Attribute#GetTypeInfoCount | 擷取物件提供的型別資訊介面數目 (0 或 1)。 (繼承自 Attribute)。 |
![]() ![]() |
System#Runtime#InteropServices#_Attribute#Invoke | 提供物件所公開的屬性和方法的存取權。 (繼承自 Attribute)。 |
回頁首
備註
當 DDEX 用戶端呼叫 DDEX 執行階段會建立一個 DDEX 支援實體執行個體特定提供者時,提供者物件通常會建立並傳回直接對應至用戶端。 在這個案例中,用戶端具有直接控制代碼給提供者的實作。 在某些情況下,,其與用戶端互動時, DDEX 支援實體之定義的擁有者可以定義支援實體的其他或修改的行為。 這也有助於不符合用戶端預期,而不將提供者寫入器執行其他工作。
DDEX 連接以服務的形式,例如 IVsDataCommand 支援實體,則要求的最常見的範例是。 IVsDataConnection的函式, DDEX 連接物件,將會在用戶端要求的負荷確保連接目前正在開啟並不是使用另一個用戶端,不過,同時排除這些問題的顧慮在提供者支援。 因此特定連接服務可能有用戶端與其相關聯的物件執行額外的邏輯來確保開啟連接並正確、在多個用戶端。 這個實作會包裝基礎提供者物件和自動傳遞給用戶端在 DDEX 執行階段。
DDEX 要有 DDEX 執行階段傳回用戶端包裝函式物件中建立提供者支援的實體的支援實體應包含在表示支援實體型別的屬性。 屬性必須包含 ClassId ,屬性的值,而的值必須是代表在 Visual Studio 環境中註冊的類別 ID 的有效的 GUID。 最後,類別 ID 所識別的類別必須實作 IVsDataClientObject<T> 介面的 Managed 類別。 當要求用戶端, DDEX Runtime 首先會建立基礎提供者物件的執行個體。 接著便會以指定的類別 ID. 類別的執行個體。 接著,它會藉由呼叫以基礎提供者的物件 Initialize 方法初始化用戶端物件。 用戶端物件會傳送回用戶端。
DataClientObjectAttribute 屬性會非常有用。DDEX 平台擴充性,也就是說,建立其他 DDEX 服務和支援實體的型別。
範例
下列程式碼說明宣告用戶端物件屬性的虛擬化支援實體的定義。 這個定義由用戶端物件的實作,且後面接著將簡單記錄對支援實體。
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using Microsoft.VisualStudio.Data.Core;
namespace DataClientObjectAttrib
{
[DataClientObject("1520C77F-09AF-40b4-B1FE-53C30A177C59")]
public interface IVsDataSupportEntity
{
void DoSomething();
}
[Guid("1520C77F-09AF-40b4-B1FE-53C30A177C59")]
internal class ClientSupportEntity : IVsDataSupportEntity,
IVsDataClientObject<IVsDataSupportEntity>
{
private IVsDataSupportEntity _providerObj;
public void Initialize(IVsDataSupportEntity providerObj)
{
if (providerObj == null)
{
throw new ArgumentNullException("providerObj");
}
_providerObj = providerObj;
}
public void DoSomething()
{
Trace.WriteLine("DoSomething started.");
_providerObj.DoSomething();
Trace.WriteLine("DoSomething finished.");
}
}
}
執行緒安全
這個類型的任何 Public static (在 Visual Basic 中為 Shared) 成員都是安全執行緒。不保證任何執行個體成員是安全執行緒。