[Serializable]
public class Vector3D<T> {
public T x;
public T y;
public T z;
}
У меня есть этот простой класс Vector, который используется для хранения координат в различных числовых типах.
Мне нужно прочитать это из файла, а затем сохранить его.
Обычно онвыглядит примерно так:
someCoord = new Vector3D<int> {
x = reader.ReadInt32(),
y = reader.ReadInt32(),
z = reader.ReadInt32()
};
writer.Write(someCoord.x);
writer.Write(someCoord.y);
writer.Write(someCoord.z);
Я бы хотел превратить эти строки во что-то вроде этого:
someCoord = new Vector3D<int>(reader);
someCoord.Write(writer);
Я бы подготовил методы Read и Write в классе Vector3D.Хотя писать не проблема, так как я могу сделать что-то вроде:
writer.Write((T)x)
Попытка чтения таким же образом становится проблемой, так как мне приходится вызывать методы с разными именами, в зависимости от типа, который я хочучитай.
При всём, что говорится, есть ли какой-нибудь умный способ достичь этого?Я думал об использовании делегатов, но не могу понять синтаксис.
У меня был бы словарь, в котором я бы хранил пары Type-Function (делегат), чтобы, когда я захочу что-то прочитать,Я называю что-то вроде:
T value = reader.dictionary[T]();
, где reader - это экземпляр BinaryReader.Если T - это int, словарь [T] будет заменен на readInt32, если T будет float, словарь [T] будет заменен на readSingle и т. Д.
Есть идеи, как этого добиться?