範囲のリストを表すオブジェクトがあります。次のように実装しています。
public class SelectiveOutputRangeCollection<T> : ObservableCollection<SelectiveOutputRange<T>> {
public bool CanAdd() {
return (this.Count < SelectiveOutputWindow.MaxNumberOfRanges);
}
}
public class SelectiveOutputRange<T> : Tuple<T, T> {
public override string ToString() {
return this.Item1 + " to " + this.Item2;
}
}
これはコンパイルされません:
'System.Tuple<T, T>' には、0 引数を取るコンストラクターが含まれていません
単純な引数なしのコンストラクターを追加しても、同じエラーが 2 回表示されます。そして今、私はItem1とItem2が正式に読み取り専用であることを思い出しました ( を構築するための好ましい方法は を使用するためTupleですTuple.Create<T, T>())。
public class SelectiveOutputRange<T> : Tuple<T, T> { // <-- error here
public SelectiveOutputRange() { // <-- error here
this.Item1 = default(T); // <-- field is read only
this.Item2 = default(T); // <-- field is read only
}
public override string ToString() {
return this.Item1 + " to " + this.Item2;
}
}
私は、WPFが引数なしのコンストラクターについてすべてガガであることを知ってObservableCollectionいTuple<T, T>ます。
Tuple<T, T>クラスからはあまり必要ありません。Tタイプの 2 つのフィールドをSelectiveOutputRange<T>クラスに追加するだけで、1 日で済むことはわかっています。
しかし、私の好奇心のためTupleに、 WPF で sを使用する方法はありますObservableCollectionか? それとも、ここで何か他の奇妙なことが起こっていますか?