如何使我的自定义类型出现在Visual Studio设置编辑器中?

时间:2015-03-09 16:08:16

标签: c# visual-studio-2012 application-settings

假设我有一个自定义类型,我想用它来允许用户在Person中配置app.config的详细信息:

public class Person
{
  public string FirstName { get; set; }
  public string LastName { get; set; }
}

我如何确保" Person"当我点击" Browse..."时出现在类型列表中在项目的 Visual Studio设置编辑器中(在下载" Type")的组合框之后?

1 个答案:

答案 0 :(得分:1)

[ 1:]
MSDN article about Select a Type Dialog Box,我发现了这个:

  

可用的引用程序集显示在树控件中。打开引用的程序集以显示程序集的名称空间。

因此,您的解决方案之一是制作自己的程序集,将其引用到您的解决方案中,然后您可以在Type Dialog Box中找到它。


在我的搜索中,我发现System.Drawing.Point可用(With this structure)且System.Drawing.RectangleType Dialog Box中不可用(With this structurestructattributes相同,因此我发现Type显示Dialog Box并不依赖于制作struct并使用某些attributes。< / p>


[ 2:]
另一方面,您可以使用类似string的{​​{1}}类型设置,并在您的类中添加构造函数或方法,将您的类属性设置为您想要的属性,如下所示:

fName; lName

[ 3:]
这不是一个好方法但可以注意到,您可以通过在public Person(string fullName, char seperator = ';') { if (fullName.IndexOf(seperator) > 0) { firstname = fullName.Substring(0, fullName.IndexOf(seperator) - 1); lastname = fullName.Substring(fullName.IndexOf(seperator) + 1); } } 中进行编辑来手动编辑设置类型,如下所示:

Settings.Designer.cs

但这会迫使您对班级进行一些更改,每当您保存[global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("fName; lName")] public Person Test { get { return ((Person)(this["Test"])); } set { this["Test"] = value; } } 时,您都应该反复进行更改。