我试图找出一种方法来存储数据库中的文件编码,然后能够将其检索回原始类型(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)获取编码.