私はこの問題に頻繁に遭遇しましたが、まだ満足のいく解決策を見つけていません。
savegames のリーダーを実装しています (ただし、他の種類のファイルにも適用できます)。バージョンによっては、いくつか追加されたエントリがありますが、順序は常に同じです。したがって、クラスを作成しました:
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 */ }
。エントリはプリミティブ型またはオブジェクトにすることができますが、これが問題です...
インターフェイスを定義し、必要なプリミティブ型ごとにラッパーとして実装する必要がありますか? または、よりエレガントなソリューションはありますか?