我经常遇到这个问题,但我还没有找到令人满意的解决方案。
我正在实现一个用于保存游戏的阅读器(但它也可以应用于其他类型的文件)。根据版本,有一些添加的条目,但顺序始终保持不变。因此我创建了一个类:
public class Entry<T> {
public T Value;
public readonly FileVersion MinVersion;
public Entry(T v = default(T), ScenarioVersion m = FileVersion.V115) {
Value = v;
MinVersion = m;
}
}
现在,你猜,我想用尽可能少的代码编写这些条目。我只想写一行if (version >= MinVersion) { /* write data */ }
。条目可以是原始类型或对象,这是问题所在......
应该为每个需要的原始类型定义一个接口并实现它作为包装器吗?还是有更优雅的解决方案?