Net.Like.Xue.Tokyo/Assets/BITKit/Core/Net/NetMessage.cs

27 lines
961 B
C#

using System;
using System.IO;
namespace BITKit
{
public interface INetMessageReader
{
void Initialize();
Type GetMessageType();
object ReadBinaryAsObject(BinaryReader reader);
void WriteBinaryAsObject(BinaryWriter writer, Object value);
}
public interface INetMessageReader<T> : INetMessageReader
{
T ReadBinary(BinaryReader reader);
void WriteBinary(BinaryWriter writer, T value);
}
public abstract class NetMessageReader<T> : INetMessageReader<T>
{
public Type GetMessageType() => typeof(T);
public virtual void Initialize() { }
public abstract T ReadBinary(BinaryReader reader);
public object ReadBinaryAsObject(BinaryReader reader) => ReadBinary(reader);
public abstract void WriteBinary(BinaryWriter writer, T value);
public void WriteBinaryAsObject(BinaryWriter writer, object value) => WriteBinary(writer, (T)value);
}
}