gpt4 book ai didi

c# - 二进制写法(var/object)

转载 作者:太空宇宙 更新时间:2023-11-03 11:03:53 24 4
gpt4 key购买 nike

在我的程序中,我会在运行时得到一个var对象,我想把它写入一个二进制文件,但是我不能写var变量通过使用 BinaryWriter。它给出了一个编译错误,即无法从“object”转换为“bool”。如何解决?

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

最佳答案

var 在这种情况下将解析为 object,因为这是 GetValue 返回的内容。没有接受 objectBinaryWriter.Write 重载。您接下来想要什么取决于以下几点:

  • 如果您的意图是编写一个非常简单的值(单个 boolint 等 - BinaryWriter 支持的值) ) 到一个文件,那么你将不得不打开那个简单值的类型;一个厚脸皮的方法是使用 dynamic,它将在运行时计算出来:

    writer.Write((dynamic)obj); // not great, but should work
  • 如果您的目的是编写一段复杂的数据(/结构 等),那么您不应该使用 BinaryWriter - 你应该使用一个序列化器。可能是 BinaryFormatter(尽管它有一些严重的问题让我不愿意推荐它)或 protobuf-net,或类似的

关于c# - 二进制写法(var/object),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16689746/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com