我有以下结构:
public class Base : BaseViewModel
{
public string Name{ get; set; }
}
public class SubBase<T> : Base
{
public virtual IEnumerable<T> Values{ get; set; }
private T selectedValue;
public T SelectedValue
{
get { return selectedValue; }
set
{
selectedValue= value;
OnPropertyChanged();
}
}
}
问题是我按如下方式创建BaseFiltr列表
ObservableCollection<BaseFiltr>
然后我有一个来自list的元素,其类型为BaseFiltr,我想获得它的SelectedValue属性,但遗憾的是它不可能,因为它被放置在派生类中。我不能将此属性放在BaseFiltr中,因为我必须将其标记为泛型。 BaseFiltr仅为列表的目的而创建,以避免设置如下:
ObservableCollection<BaseFiltr<some type>>
有什么建议吗?提前谢谢。
答案 0 :(得分:1)
我有一个列表中的元素
BaseFiltr
,我希望得到它的WybranaWartosc
属性
您有一个基本问题 - BaseFiltr
没有 WybranaWartosc
属性 - 只有SubBaseFiltr<T>
。您可以检查每个项目,看看它是SubBaseFiltr<T>
还是然后投射并探测它的WybranaWartosc
属性。
仅为列表目的创建BaseFiltr,以避免设置如下:
ObservableCollection<BaseFiltr<some type>>
看起来你正在牺牲正确的输入以减少轻微的复杂性。如果您的集合真的是SubBaseFiltr<T>
个对象的集合,则使用该类型。