2009-03-02 41 views
9

我在我的.NET项目中使用Settings类。我注意到在编辑器中,只有某些类型可用作Settings类中各个属性的类型。如果我想拥有一个属性,例如我的代码或泛型集合中的枚举属性,该怎么办?我将如何实现?使用复杂类型的设置

我猜我可以在一个单独的文件中使用部分类机制(因为设置已经定义为部分类),但我想看看是否有人同意这一点,如果可能有办法在编辑器中完成。

+0

我不确定要正确理解你的问题,主要是关于编辑器的部分和“某些类型可用作类型”的部分,你能澄清它还是改述它? – mbillard 2009-03-02 18:55:51

+0

那么,如果您在项目中创建了Settings.settings文件,那么您可以使用编辑器来设置数据类型,名称等设置。您从树列表框中选择一个设置的数据类型。该TreeList框只引用某些类型。我的程序集中的类型不是引用。 – 2009-03-02 20:41:57

回答

10

创建一个新的“设置”文件来添加复杂/用户定义类型的选择。 这是一个如何为一个枚举。

步骤1。创建设置文件

alt text

步骤2。浏览型

alt text

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

alt text

步骤4。ただ - 完成

alt text

0

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

0

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

4

为了得到一个自定义的类在列表中显示,确保它有一个默认的构造函数作为它的一个建设方案。我很难学会这个

2

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

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

我可以通过右击我的设置文件中创建这些列表,选择打开方式...

然后选择XML /文本编辑器,设置“类型”值的完全限定类名,即:

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> 

一旦你这样做了,你应该有一个正确配置的你创建的自定义设置对象列表。