Хорошо, поэтому название не имеет смысла. Я понял Но я действительно не знаю много об этом. Я пытаюсь создать чат-сервер, и мне нужно отправить класс сообщений через сокет-соединение. Моя сериализация работает нормально, если я сериализую свой объект, десериализую его и распечатаю, но он не будет работать, если я попытаюсь отправить его через сокетное соединение. Как ни странно, раньше все работало нормально, но как только я изменил тип файла на console. net, чтобы настроить его так, чтобы он отключал сокетное соединение до того, как отключится. К сожалению, как только я его изменил, я получил следующую ошибку:
System.Runtime.Serialization.SerializationException: 'Unable to find assembly 'ConsoleApp1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.'
Я не особо разбираюсь в сериализации, но думаю, что я делаю, это создаю поток памяти, в котором я пишу сериализованное сообщение. Затем я отправляю этот поток памяти в виде байтового массива через соединение с сокетом. По прибытии получатель десериализует объект, снова используя поток памяти, и возвращает класс.
Вот код сериализации.
using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;
using System.IO;
using System.Runtime.Serialization.Formatters;
using System.Threading;
namespace ConsoleApp1
{
public class messageSerializer
{
public static byte[] serializeMessage(object messageToSerialize)
{
MemoryStream memoryStream = new MemoryStream();
BinaryFormatter myBinaryFormatter = new BinaryFormatter();
myBinaryFormatter.Serialize(memoryStream, messageToSerialize);
return memoryStream.ToArray();
}
public static Message deserializeMessage(byte[] messageToDeserialize)
{
MemoryStream memoryStream = new MemoryStream(messageToDeserialize);
BinaryFormatter myBinaryFormatter = new BinaryFormatter();
Message message = (Message)myBinaryFormatter.Deserialize(memoryStream);
return message;
}
}
}
Вот класс сообщения.
[Serializable()]
public class Message
{
public string identifier { get; }
public string usernameOfSender { get; }
public string message { get; }
public string usernameOfTarget { get; }
public Message(string identifier, string message, string usernameOfTarget, string usernameOfSender)
{
this.identifier = identifier;
this.usernameOfSender = usernameOfSender;
this.message = message;
this.usernameOfTarget = usernameOfTarget;
}
}
Я совершенно сбит с толку и был бы признателен за любые советы, будь то подключение к сокету, сериализация или конкретная проблема, с которой я столкнулся.