[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);
我会在 Vector3D 类中准备好 Read 和 Write 方法。虽然写作不是问题,因为我可以执行以下操作:
writer.Write((T)x)
尝试以相同的方式阅读成为一个问题,因为我必须调用具有不同名称的方法,具体取决于我想要阅读的类型。
说了这么多,是否有一些聪明的方法仍然可以实现这一目标?我正在考虑使用委托,但我无法弄清楚语法。
我有一本字典,我会在其中保留 Type-Function(delegate) 对,这样当我想阅读一些东西时,我会调用类似的东西:
T value = reader.dictionary[T]();
其中 reader 是 BinaryReader 的一个实例。如果 T 是 int,dictionary[T] 将替换为 readInt32,如果 T 是 float,dictionary[T] 将替换为 readSingle,等等。
知道如何实现这一目标吗?
肥皂起泡泡
相关分类