如何使我的自定义类型显示在 Visual Studio 设置编辑器中

本文关键字:Studio Visual 设置 编辑器 显示 何使 我的 自定义 类型 | 更新日期: 2024-11-08 05:47:53

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

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

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

如何使我的自定义类型显示在 Visual Studio 设置编辑器中

[1: ]
在MSDN关于Select a Type Dialog Box的文章中,我发现了这个:

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

因此,您的解决方案

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


当我的搜索时,我发现System.Drawing.Point可用(使用此结构)而System.Drawing.Rectangle不可用(使用此结构),Type Dialog Box两者都具有相同的attributes struct,因此我发现在该Dialog Box中显示Type并不依赖于制作struct和使用一些attributes


[2: ]
换句话说,您可以使用 fName; lName 之类的值进行string类型设置,并向类中添加构造函数或方法,以将类属性设置为所需的属性,如下所示:

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);
    }
}

[3: ]
这不是一个好方法,但可以注意到,您可以通过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;
    }
}

但这会迫使你对你的类进行一些更改,每当你保存时Settings你应该一次又一次地进行这种更改。