Десериализовать другой объект одним и тем же методом в C# - PullRequest
0 голосов
/ 19 апреля 2020

У меня есть консольное приложение клиент / сервер, которое использует сокеты для связи. Они работают на одной машине, но независимо друг от друга. У меня также есть два класса: Aircraft и Seat, которые они оба клиент / сервер могут сериализовать и десериализовать. Проблема, с которой я столкнулся, заключается в том, что Сервер может получать либо серийный экземпляр самолета, либо серийное место. Как мне обойти, чтобы определить, относится ли полученная строка к типу самолета или сиденья? Ниже приведен код, который я использую для десериализации объектов.

 public static class EntityDeserialization
{
    /// <summary>
    /// Converts the stream of bytes into an instance of a aircraft.
    /// can be used on both Client and Server ends to access 
    /// properties and methods of each aircraft instance
    /// </summary>
    /// <returns>The Aircraft.</returns>
    /// <param name="serialisedData">Serialised Aircraft.</param>
    public static Aircraft GetAircraft(string serialisedData)
    {
        XmlSerializer deserialiser = new XmlSerializer(typeof(Aircraft));
        using (TextReader tr = new StringReader(serialisedData))
        {
            return (Aircraft)deserialiser.Deserialize(tr);
        }
    }
    /// <summary>
    /// Converts the stream of bytes into an instance of a seat.
    /// can be used on both Client and Server ends to access 
    /// properties and methods of each seat instance
    /// </summary>
    /// <returns>The Aircraft.</returns>
    /// <param name="serialisedData">Serialised Seat.</param>
    public static Seat GetSeat(string serialisedData)
    {
        XmlSerializer deserialiser = new XmlSerializer(typeof(Seat));
        using (TextReader tr = new StringReader(serialisedData))
        {
            return (Seat)deserialiser.Deserialize(tr);
        }
    }
}
...