IPropertySet Interfaz

Definición

Representa una colección de pares clave-valor, correlacionando otras interfaces de colección.

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
Implementaciones
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 de Windows

Familia de dispositivos
Windows 10 (se introdujo en la versión 10.0.10240.0)
API contract
Windows.Foundation.FoundationContract (se introdujo en la versión v1.0)

Ejemplos

En este ejemplo se muestra cómo comprobar un elemento dentro del objeto IPropertySet devuelto por una propiedad Windows Runtime. En concreto, esto procede de la propiedad CoreApplication.Properties . Este fragmento de código procede del ejemplo de cliente HTTP ControlChannelTrigger. Tenga en cuenta cómo la versión de C# se convierte en cadena IDictionary<, objeto> para que pueda usar el indexador, mientras que la versión de extensiones de componentes de Visual C++ (C++/CX) usa HasKey y Lookup. Normalmente, esto es todo lo que haces con un objeto IPropertySet que obtienes de las distintas propiedades de Windows Runtime que devuelven el tipo: busca claves específicas en el conjunto de propiedades y, a continuación, establece alguna propiedad de aplicación en el valor correspondiente si existe.

// 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");
}

Comentarios

Esta interfaz es inusual en que no define ningún miembro nuevo. En su lugar, pone en correlación otras tres interfaces de colección de modo que comparten las mismas restricciones de parámetros de tipo:

Si convierte un objeto en IPropertySet (que no es un genérico), puede usar los métodos combinados de estas tres interfaces basadas en el uso de String para key, Object para value. Para una implementación práctica, Windows Runtime usa la clase PropertySet. Consulte la documentación de varios miembros de PropertySet para aprender a usar esos métodos una vez que se convierte como IPropertySet.

En muchos casos en los que una API de Windows Runtime usa propertySet como valor, se muestra realmente como IPropertySet en las firmas. PropertySet se puede considerar la implementación práctica de IPropertySet que está lista para su uso por el código de la aplicación. El código JavaScript puede tratar cualquier valor de IPropertySet como si implementara los prototipos propertySet . El uso por tipo es el escenario principal de IPropertySet; la implementación de la interfaz en el código de la aplicación es menos común.

IPropertySet también se implementa mediante la clase ValueSet . ValueSet es el tipo de valor de varias propiedades ContinuationData , que permiten restaurar el estado cuando las aplicaciones se reanudan después de llamar a un método AndContinue que podría desactivar la aplicación. ValueSet y todas las propiedades ContinuationData y los métodos AndContinue son solo Windows Phone API porque solo es Windows Phone que tiene este comportamiento. Para obtener más información, consulta Cómo continuar tu aplicación de Windows Phone Store después de llamar a un método AndContinue. La diferencia entre ValueSet y PropertySet es que la implementación valueSet de métodos como Insert exige que sus valores de propiedad sean tipos de valor.

Eventos

MapChanged

Se produce cuando cambia el mapa.

(Heredado de IObservableMap<K,V>)

Se aplica a

Consulte también