Compartir a través de


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 buscar un elemento dentro del objeto IPropertySet devuelto por una propiedad de Windows Runtime. En concreto, esto procede de la propiedad CoreApplication.Properties. Este fragmento de código procede del ejemplo de cliente HTTP de ControlChannelTrigger. Observe cómo la versión de C# se convierte en <cadena,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 nuevo miembro. En su lugar, correlaciona otras tres interfaces de colección, de modo que comparten las mismas restricciones de parámetros de tipo:

  • IIterable (restricción IKeyValuePair, con restricción interna de String, Object)
  • IMap (restricción String, Object)
  • IObservableMap (restricción String, Object)

Si convierte un objeto en IPropertySet (que no es genérico), puede usar los métodos combinados de estas tres interfaces basadas en el uso de string para la clave, 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 convierta como IPropertySet.

En muchos casos en los que una API de Windows Runtime usa un PropertySet como valor, en realidad se muestra como IPropertySet en las firmas. PropertySet se puede considerar la implementación práctica de IPropertySet que está lista para su uso por código de aplicación. El código JavaScript puede tratar cualquier valor de IPropertySet como si implementara los prototipos de PropertySet. El uso por tipo es el escenario principal de IPropertySet; implementar realmente 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 de 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 de ContinuationData y los métodos de 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 la 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 de 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