【发布时间】:2014-06-18 17:00:25
【问题描述】:
我正在为 Visual Studio 开发一个扩展。
我有一个选项页面:
public class GeneralOptionsPage : DialogPage
{
[Category("General")]
[DisplayName("Foos")]
[Description("Bla Foo Bla")]
public string[] Foos { get; set; }
[Category("General")]
[DisplayName("Bar")]
[Description("Bar Foo Bar")]
public string Bar { get; set; }
}
Bar 属性可以完美运行并保持不变。
Foos 属性也可以工作(它甚至会在选项页面中为您提供一个很好的弹出窗口,您可以在其中每行输入一个字符串),这意味着我可以设置它并在我的扩展程序中使用它,但它不是写入注册表/存储。当我关闭 VS 并再次打开它时,它总是空的。
引用MSDN:
DialogPage 的默认实现支持具有适当转换器的属性,或者是可以扩展为具有适当转换器的属性的结构或数组。有关转换器的列表,请参阅 System.ComponentModel 命名空间。 Visual Studio 可扩展性示例管理 int、string 和 System.Drawing.Size 属性。
据我了解,我正在使用来自 System.ComponentModel 命名空间的有效组件。
那我做错了什么?我必须以不同的方式处理数组吗?
【问题讨论】:
-
你试过 List
而不是 string[] 吗? -
当您使用
List<string>时,您必须提供一个具有空构造函数的类,而string没有。但我什至尝试使用List<MyCustomClass>,其中MyCustomClass是string的包装类-但这些值不会持续存在。 -
你试过
StringCollection吗? -
@qqbenq 我试过
StringCollection,但它没有被持久化:(
标签: c# visual-studio visual-studio-2012 vsix visual-studio-sdk