我正在使用Windows Forms和VS2008。我想在我的应用程序的设置文件中存储枚举值。

VS2008中的设置编辑器只为我提供了一组有限的类型。令人惊讶的是,枚举似乎不是自动支持的这些类型之一 - 我是否理解正确?

从阅读主题开始,似乎我可能需要编写一个TypeConverter类,以使我的枚举转换为字符串,反之亦然。我已经为我的枚举实现了这个,并将TypeConverter属性添加到我的枚举中,以指示用于该枚举的转换器类。

但是,当我尝试在我的设置文件(在“选择类型”)对话框中指定它时,它只是说我的类型没有定义,所以我有点卡住了。

有人可以向我解释如何在Windows窗体应用程序的设置文件中存储枚举吗?它似乎是一个非常简单(通常需要)的功能,我很惊讶它还没有被支持,而且我似乎必须做很多工作才能让它工作(并且只有一个枚举!)。

因此,我认为我必须遗漏一些东西,而且实际上很容易......

让我说我的枚举看起来像这样:

namespace MyApp
{
    enum MyEnum
    {
        Yes,
        No
    }
}

...如何在我的设置文件中存储此枚举的值? (然后检索它。)

(显然我可以存储一个字符串或整数并解释自己,但这看起来很笨重,我希望Windows Forms能够更清晰地处理这类事情。)

有帮助吗?

解决方案

枚举实际上并没有远离数字类型(默认为int),并且可以互换使用。我不认为来回转发并存储int是笨重的。实际上只有字符串可以存储在设置文件中。这通过扩展意味着任何可序列化为字符串的东西。

另一种方法是存储枚举的文本值(因此它是人类可编辑的)并使用Enum.Parse(type,string)解析它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top