在我的程序中,我将在运行时获得一个var
对象,我想将其写入二进制文件,但我无法使用{{1}编写var
变量}。它给出BinaryWriter
的编译错误。怎么解决?
cannot convert from 'object' to 'bool'
答案 0 :(得分:2)
var
将解析为object
,因为这是GetValue
返回的内容。接受BinaryWriter.Write
的{{1}}没有超载。你接下来想要的东西取决于一些事情:
如果您打算将一个非常简单的值(一个object
,bool
等 - 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
。