使用复杂类型的设置

时间:2009-03-02 18:49:14

标签: c# configuration settings

我在.NET项目中使用Settings类。我在编辑器中注意到,只有某些类型可用作Settings类中各个属性的类型。如果我想从我的代码或通用集合中获取枚举属性,该怎么办?我该如何实现呢?

我猜我可以使用部分类机制在一个单独的文件中执行它(因为Settings已经被定义为部分类)但是我想看看是否有人同意这一点以及是否有办法在编辑器中完成。

5 个答案:

答案 0 :(得分:10)

创建一个新的“设置”文件,以添加复杂/用户定义的选择类型。 这是Enum的方法。

第1步。创建设置文件

alt text

第2步。浏览类型

alt text

第3步。选择类型(Namespace.TypeName)

alt text

第4步。 Ta da - 完成

alt text

答案 1 :(得分:4)

要获取要在该列表中显示的自定义类,请确保它具有默认构造函数作为其中一个构造选项。我很难学到这一点

答案 2 :(得分:2)

要回答Jeffrey关于是否可以在设置文件中使用通用列表的评论/问题,答案是肯定的。您只需手动编辑Settings xml文件。例如,如果我有以下类:

public class UrlAlias
{
    public string Name { get; set; }
    public string BaseUrl { get; set; }
}

我可以通过右键单击我的设置文件并选择打开方式...

来创建这些列表

然后选择XML / Text Editor,并将“Type”值设置为完全限定的类名,即:

Type="System.Collections.Generic.List`1[MyProject.SomeNamespace.UrlAlias]"

完整设置xml如下所示:

<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="MyProject.Properties" GeneratedClassName="Settings">
 <Profiles />
  <Settings>
    <Setting Name="UrlAliases" Type="System.Collections.Generic.List`1[CommonAddin.Data.DataSource.UrlAlias]" Scope="User">
      <Value Profile="(Default)"></Value>
    </Setting>
  </Settings>
</SettingsFile>

执行此操作后,您应该具有已创建的自定义设置对象的正确配置列表。

答案 3 :(得分:0)

作为部分类的一部分在单独的文件中执行它是完全可以接受的。

答案 4 :(得分:0)

如果您希望能够通过配置文件填充复杂对象,我建议使用一些依赖注入框架s.a. Spring.Net。