C# 我可以向PasswordCredential.properties添加自定义属性吗?

C# 我可以向PasswordCredential.properties添加自定义属性吗?,c#,windows-8,windows-runtime,passwordvault,C#,Windows 8,Windows Runtime,Passwordvault,在WinRT API中,存在包含该类的Windows.Security.Credentials命名空间。 使用它,我们可以加密敏感数据,如用户名和密码,但该类本身有一个名为“Properties”的属性,在我看来,它像一个方便的容器,用于存放与存储的凭据相关的其他自定义属性,但我无法使其工作。 文档中的“属性”有一个“只读”访问类型,但我认为这意味着我不能更改它指向的容器的引用。 我的问题是: 的“属性”属性对程序员有用吗 对不起,文本中有任何错误,您也可以在答案中更正我的英语,它不是我的母语;

在WinRT API中,存在包含该类的Windows.Security.Credentials命名空间。 使用它,我们可以加密敏感数据,如用户名和密码,但该类本身有一个名为“Properties”的属性,在我看来,它像一个方便的容器,用于存放与存储的凭据相关的其他自定义属性,但我无法使其工作。 文档中的“属性”有一个“只读”访问类型,但我认为这意味着我不能更改它指向的容器的引用。 我的问题是:

的“属性”属性对程序员有用吗

对不起,文本中有任何错误,您也可以在答案中更正我的英语,它不是我的母语;)

编辑:这可能有用:

以下代码中的“Add”方法引发ArgumentException:

PasswordVault v = new PasswordVault();
PasswordCredential c = new PasswordCredential("TEST", "TEST", "TEST");
c.Properties.Add("Name", "testName");
v.Add(c);

不,它是只读属性,因此无法设置它。它的设计目的是让您可以枚举对象的属性(不是c#类属性,而是属性集合的单个属性)。命名会让人困惑。

不,它是只读属性,因此无法设置。它的设计目的是让您可以枚举对象的属性(不是c#类属性,而是属性集合的单个属性)。命名让人困惑。

不幸的是,PasswordCredentials.Properties是一个实例,文档将每个方法描述为“…保留供内部使用,不用于代码”


这就是为什么它不可供程序员使用。

不幸的是,PasswordCredentials.Properties是一个实例,文档将每个方法描述为“…保留供内部使用,不用于代码中”


这就是为什么它不适用于程序员。

我知道PasswordCredential.Properties只是一个键值对容器。我想用它的“Add”方法放入我自己的配对,但它似乎无法使用。我一直认为“只读”属性意味着我无法设置它,例如更改它指向的对象的引用,但我仍然可以使用它的方法修改对象,如PasswordCredential.Properties集合中的“Add”。如果基础类允许,您可以这样做。也就是说,如果我有一个只读列表,那么我可以在现有列表中添加其他项,但是我不能将新列表放在它的位置,但是如果它是只读的IEnumerable,那么我就不能向集合中添加任何内容,或者让它指向一个新的IEnumerable。好吧,假设我理解;)PasswordCredential.Properties返回一个IPropertySet接口,该接口扩展了IDictionary,并且它有一个Add方法,因此我认为它应该是可用的。是的,在这种情况下,您应该能够向它添加内容。不幸的是,如果您实际尝试添加属性,您将得到ArgumentException-“找不到属性”我知道PasswordCredential.Properties只是一个键值对的容器。我想用它的“Add”方法放入我自己的配对,但它似乎无法使用。我一直认为“只读”属性意味着我无法设置它,例如更改它指向的对象的引用,但我仍然可以使用它的方法修改对象,如PasswordCredential.Properties集合中的“Add”。如果基础类允许,您可以这样做。也就是说,如果我有一个只读列表,那么我可以在现有列表中添加其他项,但是我不能将新列表放在它的位置,但是如果它是只读的IEnumerable,那么我就不能向集合中添加任何内容,或者让它指向一个新的IEnumerable。好吧,假设我理解;)PasswordCredential.Properties返回一个IPropertySet接口,该接口扩展了IDictionary,并且它有一个Add方法,因此我认为它应该是可用的。是的,在这种情况下,您应该能够向它添加内容。不幸的是,如果您实际尝试添加属性,您将得到ArgumentException-“找不到属性”