IPropertySet Interface

Definição

Representa uma coleção de pares chave-valor, correlacionando várias outras interfaces de coleção.

public interface class IPropertySet : IIterable<IKeyValuePair<Platform::String ^, Platform::Object ^> ^>, IMap<Platform::String ^, Platform::Object ^>, IObservableMap<Platform::String ^, Platform::Object ^>
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.FoundationContract, 65536)]
/// [Windows.Foundation.Metadata.Guid(2319707551, 62694, 17441, 172, 249, 29, 171, 41, 134, 130, 12)]
/// [Windows.Foundation.Metadata.HasVariant]
struct IPropertySet : IIterable<IKeyValuePair<winrt::hstring, IInspectable const&>>, IMap<winrt::hstring, IInspectable const&>, IObservableMap<winrt::hstring, IInspectable const&>
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.FoundationContract), 65536)]
[Windows.Foundation.Metadata.Guid(2319707551, 62694, 17441, 172, 249, 29, 171, 41, 134, 130, 12)]
[Windows.Foundation.Metadata.HasVariant]
public interface IPropertySet : IDictionary<string,object>, IEnumerable<KeyValuePair<string,object>>, IObservableMap<string,object>
Public Interface IPropertySet
Implements IDictionary(Of String, Object), IEnumerable(Of KeyValuePair(Of String, Object)), IObservableMap(Of String, Object)
Derivado
Atributos
Implementações

Requisitos do Windows

Família de dispositivos
Windows 10 (introduzida na 10.0.10240.0)
API contract
Windows.Foundation.FoundationContract (introduzida na v1.0)

Exemplos

Este exemplo mostra como verificar se há um item dentro do objeto IPropertySet retornado por uma propriedade Windows Runtime. Especificamente, isso é da propriedade CoreApplication.Properties . Esse snippet de código vem do exemplo de cliente HTTP do ControlChannelTrigger. Observe como a versão do C# é convertida em cadeia de caracteres IDictionary<, objeto> para que possa usar o indexador, enquanto a versão C++/CX (extensões de componente do Visual C++) usa HasKey e Lookup. Normalmente, isso é tudo o que você faz com um objeto IPropertySet que você obtém das várias propriedades de Windows Runtime que retornam o tipo: procure chaves específicas no conjunto de propriedades e defina alguma propriedade de aplicativo para o valor correspondente se ele existir.

// In this example, the channel name has been hardcoded to lookup the property bag 
// for any previous contexts. The channel name may be used in more sophisticated ways 
// in case an app has multiple ControlChannelTrigger objects. 
string channelId = "channelOne";
if (((IDictionary<string, object>)CoreApplication.Properties).ContainsKey(channelId))
{
    try
    {
        AppContext appContext = null;
        lock(CoreApplication.Properties)
        {
            appContext = ((IDictionary<string, object>)CoreApplication.Properties)[channelId] as AppContext;
        }
        if (appContext != null && appContext.CommunicationInstance != null)
        {
            CommunicationModule communicationInstance = appContext.CommunicationInstance;

            // Clear any existing channels, sockets etc. 
            communicationInstance.Reset();

            // Create CCT enabled transport. 
            communicationInstance.SetUpTransport(communicationInstance.serverUri, GetType().Name);
        }
    }
    catch (Exception ex)
    {
        Diag.DebugPrint("Registering with CCT failed with: " + ex.ToString());
    }
}
else
{
    Diag.DebugPrint("Cannot find AppContext key channelOne");
}
// In this example, the channel name has been hardcoded to look up the property bag
// for any previous contexts. The channel name may be used in more sophisticated ways
// in case an app has multiple ControlChannelTrigger objects.
std::wstring channelId{ L"channelOne" };
if (CoreApplication::Properties().HasKey(channelId))
{
    try
    {
        auto appContext{ CoreApplication::Properties().Lookup(channelId).as<AppContext>() };
        if (appContext && appContext->CommunicationInstance())
        {
            CommunicationModule communicationInstance{ appContext->CommunicationInstance() };

            // Clear any existing channels, sockets etc.
            communicationInstance.Reset();

            // Create CCT enabled transport.
            communicationInstance.SetUpTransport(L"NetworkChangeTask");
        }
    }
    catch (winrt::hresult_error const& ex)
    {
        Diag::DebugPrint(L"Registering with CCT failed with: " + ex.message());
    }
}
else
{
    Diag::DebugPrint(L"Cannot find AppContext key channelOne");
}
// In this example, the channel name has been hardcoded to look up the property bag
// for any previous contexts. The channel name may be used in more sophisticated ways
// in case an app has multiple ControlChannelTrigger objects.
String^ channelId = "channelOne";
if (CoreApplication::Properties->HasKey(channelId))
{
    try
    {
        auto appContext = dynamic_cast<AppContext^>(CoreApplication::Properties->Lookup(channelId));
        if (appContext != nullptr && appContext->CommunicationInstance != nullptr)
        {
            CommunicationModule^ communicationInstance = appContext->CommunicationInstance;

            // Clear any existing channels, sockets etc. 
            communicationInstance->Reset();

            // Create CCT enabled transport 
            communicationInstance->SetUpTransport("NetworkChangeTask");
        }
    }
    catch (Exception^ ex)
    {
        Diag::DebugPrint("Registering with CCT failed with: " + ex->Message);
    }
}
else
{
    Diag::DebugPrint("Cannot find AppContext key channelOne");
}

Comentários

Essa interface é incomum porque não define novos membros. Em vez disso, ele correlaciona três outras interfaces de coleção, de modo que elas compartilhem as mesmas restrições de parâmetro de tipo:

Se você converter um objeto no IPropertySet (que não é um genérico), poderá usar os métodos combinados dessas três interfaces com base no uso de Cadeia de caracteres para chave, Objeto para valor. Para uma implementação prática, Windows Runtime usa a classe PropertySet. Consulte a documentação de vários membros do PropertySet para saber como usar esses métodos depois de converter como IPropertySet.

Em muitos casos em que uma API Windows Runtime usa um PropertySet como um valor, ela é mostrada como IPropertySet nas assinaturas. PropertySet pode ser considerado a implementação prática do IPropertySet que está pronto para uso pelo código do aplicativo. O código JavaScript pode tratar qualquer valor IPropertySet como se tivesse implementado os protótipos do PropertySet . O uso por tipo é o cenário principal para IPropertySet; na verdade, a implementação da interface no código do aplicativo é menos comum.

IPropertySet também é implementado pela classe ValueSet . ValueSet é o tipo de valor de várias propriedades ContinuationData , que permitem restaurar o estado quando os aplicativos são retomados depois de chamar um método AndContinue que pode desativar o aplicativo. ValueSet e todas as propriedades ContinuationData e métodos AndContinue são Windows Phone apenas APIs porque é apenas Windows Phone que tem esse comportamento. Para obter mais informações, consulte Como continuar seu aplicativo da Windows Phone Store depois de chamar um método AndContinue. A diferença entre ValueSet e PropertySet é que a implementação valueset de métodos como Insert impõe que seus valores de propriedade são tipos de valor.

Eventos

MapChanged

Ocorre quando o mapa é alterado.

(Herdado de IObservableMap<K,V>)

Aplica-se a

Confira também