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
IMap<K,V> IDictionary<K,V> IDictionary<String,Object> IMap<Platform::String,Platform::Object> IMap<winrt::hstring,IInspectable> IIterable<IKeyValuePair<K,V>> IEnumerable<KeyValuePair<K,V>> IEnumerable<KeyValuePair<String,Object>> IIterable<IKeyValuePair<Platform::String,Platform::Object>> IIterable<IKeyValuePair<winrt::hstring,IInspectable>> IObservableMap<String,Object> IObservableMap<Platform::String,Platform::Object> IObservableMap<winrt::hstring,IInspectable>

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 marcar para 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 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 de extensões de componente do Visual C++ (C++/CX) usa HasKey e Lookup. Normalmente, isso é tudo o que você faz com um objeto IPropertySet que você obtém das várias propriedades 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, pois 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 para IPropertySet (que não é um genérico), poderá usar os métodos combinados dessas três interfaces com base no uso de String para chave, Object para value. 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 de 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 PropertySet . O uso por tipo é o cenário main para IPropertySet; na verdade, implementar a 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 os métodos AndContinue são Windows Phone somente 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 sejam tipos de valor.

Eventos

MapChanged

Ocorre quando o mapa é alterado.

(Herdado de IObservableMap<K,V>)

Aplica-se a

Confira também