编码不是枚举吗?

Fra*_*ome 5 c# enums encoding

我试图找出一种方法来存储数据库中的文件编码,然后能够将其检索回原始类型(System.Text.Encoding).但我得到一个我不明白的错误.

作为测试,我创建了这个小程序来重现错误:

using System;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            object o = Encoding.Unicode;
            Encoding enc = (Encoding) Enum.Parse(typeof(Encoding), o.ToString());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我在Parse专线中得到的例外说:

Type provided must be an Enum.
Parameter name: enumType
Run Code Online (Sandbox Code Playgroud)

那么,基本上据我所知,告诉我typeof(Encoding)不会返回Enum类型?提前感谢您提供的任何帮助.

vcs*_*nes 12

不,这不是一个枚举.它是一个具有静态属性的类.像这样的东西:

public class Encoding
{
    public static Encoding ASCII
    {
         get
         {
             //This is purely illustrative. It is not actually implemented like this
             return new ASCIIEncoding();
         }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果要将编码存储在数据库中,请存储代码页:

int codePage = SomeEncoding.CodePage;
Run Code Online (Sandbox Code Playgroud)

并用于Encoding.GetEncoding(theCodePage)获取编码.