将类型值写入/从文件读取

3

我需要能够将一个类型的值存储到文件中,并在以后将其读回到该类型的值。如何最好地解决这个问题?

Type type = typeof(SomeClass);
binaryWriter.Write?(type);
2个回答

8

假设程序集稍后仍将存在,我会存储程序集限定名称

binaryWriter.Write(type.AssemblyQualifiedName);
...
string typeName = binaryReader.ReadString();
Type type = Type.GetType(typeName);

如果您已经知道类型所在的程序集,您可以直接使用完整名称(即命名空间和类型名称,但不包括程序集)。然后稍后使用Assembly.GetType(string)

AssemblyQualifiedNameType.FullName是相同的吗? - Selman Genç
1
@Selman22:不行,因为“AssemblyQualifiedName”包括命名空间而“FullName”则不包括。 - Jon Skeet

0

您还可以使用BinaryFormatter类:

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));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接