通用类型列表问题

时间:2015-01-30 13:48:27

标签: c# generics

我有以下结构:

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>>

有什么建议吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

  

我有一个列表中的元素BaseFiltr,我希望得到它的WybranaWartosc属性

您有一个基本问题 - BaseFiltr 没有 WybranaWartosc属性 - 只有SubBaseFiltr<T>。您可以检查每个项目,看看它是SubBaseFiltr<T>还是然后投射并探测它的WybranaWartosc属性。

  

仅为列表目的创建BaseFiltr,以避免设置如下:ObservableCollection<BaseFiltr<some type>>

看起来你正在牺牲正确的输入以减少轻微的复杂性。如果您的集合真的SubBaseFiltr<T>个对象的集合,则使用该类型