PropertySet 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示一个属性集,该属性集是一组具有字符串键的 PropertyValue 对象。
public ref class PropertySet sealed : IIterable<IKeyValuePair<Platform::String ^, Platform::Object ^> ^>, IMap<Platform::String ^, Platform::Object ^>, IObservableMap<Platform::String ^, Platform::Object ^>, IPropertySet
/// [Windows.Foundation.Metadata.Activatable(65536, Windows.Foundation.FoundationContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.FoundationContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class PropertySet final : IIterable<IKeyValuePair<winrt::hstring, IInspectable const&>>, IMap<winrt::hstring, IInspectable const&>, IObservableMap<winrt::hstring, IInspectable const&>, IPropertySet
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.FoundationContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
/// [Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.FoundationContract")]
class PropertySet final : IIterable<IKeyValuePair<winrt::hstring, IInspectable const&>>, IMap<winrt::hstring, IInspectable const&>, IObservableMap<winrt::hstring, IInspectable const&>, IPropertySet
[Windows.Foundation.Metadata.Activatable(65536, typeof(Windows.Foundation.FoundationContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.FoundationContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public sealed class PropertySet : IDictionary<string,object>, IEnumerable<KeyValuePair<string,object>>, IObservableMap<string,object>, IPropertySet
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.FoundationContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
[Windows.Foundation.Metadata.Activatable(65536, "Windows.Foundation.FoundationContract")]
public sealed class PropertySet : IDictionary<string,object>, IEnumerable<KeyValuePair<string,object>>, IObservableMap<string,object>, IPropertySet
function PropertySet()
Public NotInheritable Class PropertySet
Implements IDictionary(Of String, Object), IEnumerable(Of KeyValuePair(Of String, Object)), IObservableMap(Of String, Object), IPropertySet
- 继承
- 属性
- 实现
-
IMap<K,V> IDictionary<K,V> IMap<String,Object> IDictionary<String,Object> IMap<Platform::String,Platform::Object> IMap<winrt::hstring,IInspectable> IIterable<IKeyValuePair<K,V>> IEnumerable<KeyValuePair<K,V>> IIterable<IKeyValuePair<String,Object>> 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> IPropertySet
Windows 要求
设备系列 |
Windows 10 (在 10.0.10240.0 中引入)
|
API contract |
Windows.Foundation.FoundationContract (在 v1.0 中引入)
|
注解
此类 (IMap<K,V> 接口) 实现映射,其键类型为 String ,值为 PropertyValue。 PropertySet 类型允许各种Windows 运行时 API 返回混合值的集合,这些值仍可使用 PropertySet 的通用集合 API 进行迭代或检查,这些 API 与 IMap<K、V>、IDictionary<TKey、TValue> 或 JavaScript 集合和枚举技术相匹配,具体取决于应用使用的语言。
PropertyValue 是一个类,它支持大量静态 Create* 方法,这些方法从通常为值类型或基元 (布尔值、数字等) 或这些值的数组的输入创建特意非类型化值。 调用其中一个静态 PropertyValue 方法后,其返回值可以被视为 PropertyValue 实例 (但是,如果您查看签名) , Create* 方法在技术上返回 Object 。
但是,通常不会以要求自己填充集中 的 PropertyValue 值的方式使用 PropertySet。 相反,通常会从Windows 运行时 API 获取一个填充的 PropertySet 作为返回值,该 API 提供一个集合,其中的值类型可能混合在一起,但仍按源或方案相互关联。 例如,检索应用数据时获取的 LocalSettings 和 RoamingSettings 值的类型为 ApplicationDataContainer,并且每个值都包含一个 PropertySet 作为其 Values 属性值。 与存储设置的应用数据交互时,通常从 ApplicationDataContainer.Values 获取集合。 然后,你可以:
- 使用适当的迭代语法循环访问集
- 使用 HasKey/ContainsKey 验证集中是否存在 PropertyValue
- 使用 查找 或 项 索引器检索项(一旦知道该项存在)
对于使用应用数据等方案,当你具有 PropertySet 时,可以通过引用获取它,因此,如果使用 “添加/”“插入 ”将项添加到 PropertySet,这些项将添加到应用数据中,而删除项会将其从应用数据中删除。 然后,如果对 RoamingSettings 进行过所有此类更改,则通过应用数据机制共享这些更改。
还有其他Windows 运行时 API 使用 PropertySet 值作为直接值,而不是包装在另一个类(如 ApplicationDataContainer)中。 例如, CoreApplication.Properties 返回 PropertySet。
报告媒体和设备中信息的各种属性都使用 PropertySet,例如 PlayToReceiver.Properties。 但是,还有其他媒体/设备属性集不使用 PropertySet,而是使用 MediaPropertySet,因为这些属性的标识符在键化为 GUID 而不是字符串时会更好地表示。
在许多情况下,Windows 运行时 API 使用 PropertySet 作为值,它实际上在签名中显示为 IPropertySet。 可以将 PropertySet 视为可供应用代码使用的 IPropertySet 的实际实现。 JavaScript 代码可以将任何 IPropertySet 值视为实现 PropertySet 原型。
集合成员列表
对于 JavaScript,PropertySet 支持使用索引来访问项。
构造函数
PropertySet() |
创建并初始化属性集的新实例。 |
属性
Size |
获取属性集中包含的项数。 |
方法
Clear() |
从属性集中删除所有项。 |
First() |
返回一个迭代器,用于枚举属性集中的项。 |
GetView() |
获取属性集的不可变视图。 |
HasKey(String) |
指示属性集是否具有具有指定键的项。 |
Insert(String, Object) |
将项添加到属性集。 |
Lookup(String) |
检索指定键的值。 |
Remove(String) |
从属性集中删除项。 |
事件
MapChanged |
当可观测映射发生更改时发生。 |