我需要能够将类型值存储到文件中,然后将其读回到类型值中。什么是最好的方法呢?
Type type = typeof(SomeClass);
binaryWriter.Write?(type);
答案 0 :(得分:8)
我会存储assembly-qualified name,假设程序集将在稍后出现:
binaryWriter.Write(type.AssemblyQualifiedName);
...
string typeName = binaryReader.ReadString();
Type type = Type.GetType(typeName);
如果您已经知道该类型将使用哪个程序集,则可以使用full name(即名称空间和类型名称,但不能使用程序集)。然后稍后使用Assembly.GetType(string)
。
答案 1 :(得分:0)
您也可以使用BinaryFormatter
class:
Type t = typeof (SomeClass);
BinaryFormatter serializer = new BinaryFormatter();
using (var stream = File.OpenWrite(filePath))
{
serializer.Serialize(stream, t);
}
var obj = (Type)serializer.Deserialize(File.OpenRead(filePath));