0
私は現在、バイト配列をクラスオブジェクトに変換できないという問題にぶつかっています。さらに、クラスオブジェクトからバイトへのシリアル化また、バイト配列からクラスオブジェクトに変換しようとすると、Visual Studioによって次のエラーが表示されます。バイト配列の型エラーをクラスオブジェクトに変換する
An unhandled exception of type 'System.InvalidCastException' occurred in ConsoleApplication15.exe
Additional information: Unable to cast object of type 'System.Collections.Generic.List`1[ConsoleApplication15.Player]' to type 'ConsoleApplication15.Player[]'.
ここは私のコードです。
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Threading.Tasks;
public static class Program
{
static void Main(string[] args)
{
String name = Console.ReadLine();
int id = Int32.Parse(Console.ReadLine());
Player Khanh = new Player(name, id);
Khanh.testMethod(id);
List<Player> ipTest = new List<Player>();
ipTest.Add(Khanh);
byte [] BytesList = ToByteList(ipTest);
List<Player> PlayerList = ByteArrayToObject(BytesList).ToList();
Console.WriteLine(BytesList[1]);
Console.WriteLine(PlayerList[0]);
Console.ReadKey();
}
public static byte[] ToByteList(List<Player> obj)
{
if (obj == null)
return null;
BinaryFormatter bf = new BinaryFormatter();
MemoryStream ms = new MemoryStream();
bf.Serialize(ms, obj);
return ms.ToArray();
}
public static Player [] ByteArrayToObject(byte[] arrBytes)
{
MemoryStream memStream = new MemoryStream();
BinaryFormatter binForm = new BinaryFormatter();
memStream.Write(arrBytes, 0, arrBytes.Length);
memStream.Seek(0, SeekOrigin.Begin);
Player[] obj = (Player[])binForm.Deserialize(memStream);
return obj;
}
}
[Serializable]
public class Player
{
String Name;
int id;
public Player(String Name, int id)
{
this.id = id;
this.Name = Name;
}
public void testMethod(int n)
{
n++;
}
public String getName()
{
return Name;
}
}
ありがとうございます。