2

私のプログラムでは、var実行時にオブジェクトを取得し、それをバイナリ ファイルに書き込みたいのですが、varを使用して変数を書き込むことができませんでしたBinaryWriter。というコンパイルエラーが発生しcannot convert from 'object' to '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
4

2 に答える 2

2

varこの場合object、それがGetValue返されるため、 に解決されます。BinaryWriter.Writeを受け入れるのオーバーロードはありませんobject。次に必要なものは、いくつかのことによって異なります。

  • 非常に単純な値 (単一boolint, など - でサポートされているものBinaryWriter) をファイルに書き込むことが目的の場合は、その単純な値の型をオンにする必要があります。これを行う生意気な方法はdynamic、実行時にそれを把握するを使用することです。

    writer.Write((dynamic)obj); // not great, but should work
    
  • class複雑なデータ ( /structなど)を書き込むことが意図されている場合は、使用しないでください。シリアライザーBinaryWriterを使用する必要があります。おそらく(それにはいくつかの深刻な問題があり、推奨するのをためらわせますが)またはprotobuf-net、または同様のBinaryFormatter

于 2013-05-22T11:00:37.957 に答える
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

于 2013-05-22T10:49:54.733 に答える