Compartilhar via


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

  • IIterable (restrição IKeyValuePair, com restrição interna de String, Object)
  • de IMap (restrição string,de objeto )
  • IObservableMap (restrição String, Object)

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 de cadeia de caracteres para chave, Object para valor. Para uma implementação prática, o 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 do Windows Runtime usa um PropertySet como um valor, ele é mostrado como IPropertySet nas assinaturas. PropertySet pode ser considerada 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, implementar a interface no código do aplicativo é menos comum.

O IPropertySet também é implementado pela classe ValueSet. ValueSet é o tipo de valor de várias propriedades de ContinuationData, que permitem restaurar o estado quando os aplicativos são retomados depois de chamar um método de AndContinue que pode desativar o aplicativo. ValueSet e todas as propriedades ContinuationData e métodos de AndContinue são somente APIs do Windows Phone porque é apenas o 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 o ValueSet implementação 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