二进制写(var / object)

时间:2013-05-22 10:44:29

标签: c# casting binary var

在我的程序中,我将在运行时获得一个var对象,我想将其写入二进制文件,但我无法使用{{1}编写var变量}。它给出BinaryWriter的编译错误。怎么解决?

cannot convert from 'object' to 'bool'

2 个答案:

答案 0 :(得分:2)

在这种情况下,

var将解析为object,因为这是GetValue返回的内容。接受BinaryWriter.Write的{​​{1}}没有超载。你接下来想要的东西取决于一些事情:

  • 如果您打算将一个非常简单的值(一个objectbool等 - int支持的内容)写入文件,那么您将拥有打开那个简单值的类型;一种厚颜无耻的方法是使用BinaryWriter,这将在运行时解决:

    dynamic
  • 如果您打算撰写复杂的数据(writer.Write((dynamic)obj); // not great, but should work / class等),那么您不应该使用struct - 您应该使用的是串行。也许是BinaryWriter(尽管有一些严重的问题让我不愿推荐它)或protobuf-net,或类似的

答案 1 :(得分:0)

BinaryWriter writer = new BinaryWriter(File.Open(fileName, FileMode.Create);
var obj = Convert.ChangeType(property.GetValue(objectToWrite, null), property.PropertyType);
writer.Write(obj);

尝试使用obj代替var