DkmDataContainer Classe

Definição

DkmDataContainer é um bloco de construção que é usado em toda essa API. Ele permite que muitos dos objetos nesta API contenham ' campos virtuais ' que são adicionados por qualquer componente no sistema. Isso é semelhante a uma versão de tipo seguro do conceito "expando" em JScript.

Regras para DkmDataContainer: 1. Todos os objetos ' reference ' no sistema herdam de DkmDataContainer. Os objetos de referência são acompanhados pelo componente Dispatcher deste sistema e em vários pontos de Marshalling ( > remotos gerenciados, nativos > gerenciados e de comunicação remota) a identidade de referência do objeto é preservada. Os objetos ' value ' não herdam de DkmDataContainer porque o sistema não rastreia esses objetos, portanto, em qualquer transição de marshaling, o valor do objeto é copiado. 2. Os ' campos virtuais ' desses objetos que herdam de DkmDataContainer são chamados de itens de dados. 3. Os itens de dados são privados para o componente que os adicionou. Este recurso não pode ser usado para compartilhar campos entre limites de componentes. 4. Os itens de dados são instâncias de uma classe de item de dados. Em código gerenciado, as classes de item de dados herdam de DkmDataItem para identificá-las como um item de dados. No código nativo, os itens de dados herdam de IUnknown. 5. Normalmente, um componente nunca precisaria remover um item de dados. Isso ocorre porque os itens de dados são removidos automaticamente quando o objeto de contêiner é fechado.

public ref class DkmDataContainer abstract : MarshalByRefObject
public abstract class DkmDataContainer : MarshalByRefObject
type DkmDataContainer = class
    inherit MarshalByRefObject
Public MustInherit Class DkmDataContainer
Inherits MarshalByRefObject
Herança
DkmDataContainer
Derivado

Exemplos

Classe de item de dados de exemplo. Em código gerenciado, os itens de dados precisam herdar da classe DkmDataItem AliasLog: DkmDataItem {ReadOnly String LogPath; gravador do StreamWriter ReadOnly; AliasLog público (log de cadeia de caracteres) {LogPath = log; Writer = novo StreamWriter (log); } Os itens de dados podem substituir o método ' fechamento ' para receber a notificação quando o objeto de dados//contêiner (DkmClrAlias em nosso exemplo) é fechado. proteção de substituição nula fechamento () {Writer. Close ();}} Crie uma nova instância da classe de item de dados de exemplo AliasLog log = New AliasLog ("c: \ foo. log"); os itens de dados podem ser passados para um método Create... Alias DkmClrAlias = DkmClrAlias. Create ("Exemploname", log); // ... ou então, pode ser adicionado usando o alias setdataitem. Setdataitem < AliasLog > (DkmDataCreationDisposition. CreateAlways, log); em seguida, o valor pode ser recuperado usando GetDataItem AliasLog Find = alias. GetDataItem < AliasLog > ();

Propriedades

IsUnloaded

Retornará true se um evento ' Unloaded ' tiver sido gerado para este objeto (exemplo: DkmThread:: Unload é chamado) ou se o objeto foi fechado. Observe que o cuidado deve ser usado ao verificar esse status como, sem sincronização, o status retornado pode não ser mais preciso na instrução após sua leitura.

Métodos

GetDataItem<T>()

Obtém a instância de ' T' que foi adicionada a esta instância de contêiner. Se esse contêiner não contiver um ' T', essa função retornará NULL.

RemoveDataItem<T>()

Remova a instância de ' T' deste contêiner. Normalmente, é desnecessário chamar esse método, pois um contêiner de dados será automaticamente esvaziado quando o objeto for fechado.

SetDataItem<T>(DkmDataCreationDisposition, T)

Coloque um novo item no contêiner de dados.

Aplica-se a