我有一个代表范围列表的对象。我正在执行如下:
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 个参数的构造函数
即使添加一个简单的无参数构造函数也会导致相同的错误出现两次。现在我被提醒了,Item1
并且Item2
是正式只读的(作为构造的首选方式Tuple
是 through 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>
的 s 而它不能。
我在课堂上不需要那么多Tuple<T, T>
;我知道我可以在类中添加两个类型T
的字段SelectiveOutputRange<T>
并收工。
但是为了我的好奇,有没有办法Tuple
在 WPF 中使用 s ObservableCollection
?还是这里发生了其他奇怪的事情?