IPropertySet Interface
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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
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
Eventos
MapChanged |
Ocorre quando o mapa é alterado. (Herdado de IObservableMap<K,V>) |