IPropertySet インターフェイス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
キーと値のペアのコレクションを表し、他のいくつかのコレクション インターフェイスを関連付けます。
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)
- 派生
- 属性
- 実装
-
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>
Windows の要件
デバイス ファミリ |
Windows 10 (10.0.10240.0 で導入)
|
API contract |
Windows.Foundation.FoundationContract (v1.0 で導入)
|
例
この例では、Windows ランタイム プロパティによって返される IPropertySet オブジェクト内の項目を確認する方法を示します。 具体的には、これは CoreApplication.Properties プロパティから取得されます。 このコード スニペットは、ControlChannelTrigger HTTP クライアント サンプルに由来します。 C# バージョンがインデクサーを使用できるように IDictionary
// 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");
}
注釈
このインターフェイスは、新しいメンバーを定義しないという点では珍しいです。 代わりに、同じ型パラメーター制約を共有できるように、他の 3 つのコレクション インターフェイスを関連付けます。
- IIterable (制約 IKeyValuePair, inner constraint of String, Object)
- IMap (constraint String, Object)
- IObservableMap (制約 文字列, オブジェクト)
オブジェクトを IPropertySet (ジェネリックではない) にキャストする場合は、キーに
Windows ランタイム API が PropertySet を値として使用する多くの場合、実際には署名では IPropertySet として表示されます。 PropertySet は、アプリ コードで使用できる IPropertySet の実際の実装と見なすことができます。 JavaScript コードでは、PropertySet プロトタイプを実装したかのように、任意の IPropertySet 値を処理できます。 種類別の使用は、IPropertySet の主なシナリオです。実際にアプリ コードにインターフェイスを実装することはあまり一般的ではありません。
IPropertySet は、ValueSet クラスによっても実装されます。 ValueSet は、複数の ContinuationData プロパティの値型です。このプロパティを使用すると、アプリを非アクティブ化する可能性がある AndContinue メソッドを呼び出した後、アプリが再開したときに状態を復元できます。 ValueSet と、すべての ContinuationData プロパティと AndContinue メソッドは、この動作を持つ Windows Phone のみであるため、Windows Phone のみの API です。 詳細については、「AndContinue メソッドを呼び出した後に Windows Phone ストア アプリを続行する方法」を参照してください。 ValueSet と PropertySet の違いは、ValueSetInsert などのメソッドの実装によって、そのプロパティ値が値型であることが強制される点です。
イベント
MapChanged |
マップが変更されたときに発生します。 (継承元 IObservableMap<K,V>) |