如何将通用字段传递给可观察集合

时间:2015-02-24 05:43:08

标签: c# generics

我的代码如下

public class Field<T> 
{

    private T_fieldValue;

    public T FieldValue
    {
        get
        {
            return _fieldValue;
        }
        set
        {
            _fieldValue = value;

        }
    }

}


public class Container
{
    private ObservableCollection<Field> _fieldValues;


    public ObservableCollection<Field> FieldValues
    {

        get { return _fieldValues; }
        set { _fieldValues = value; }
    }
}

如何在容器类中传递我的Type参数?

即我正在寻找像

这样的东西
  private ObservableCollection<Field<T>> _fieldValues;

修改    我按如下方式对课程进行了更改

public class Container<T> 
{

    public string MyName { get; set; }
    private ObservableCollection<Field<T>> _fieldValues;


    public ObservableCollection<Field<T>> FieldValues
    {

        get { return _fieldValues; }
        set { _fieldValues = value;}
    }
}

}

现在在我的Main课程中如何调用类似

的内容
   new ObservableCollection<Container>() { MyName ="Kyle",

   new Container() { FieldValues = new ObservableCollection<Field<int>>()

  {new Field<int>(){FieldValue=10}}; // I am not sure if this syntax is correct 

1 个答案:

答案 0 :(得分:0)

您还需要使Container类通用:

class Container<T> : BindableBase
{
    private ObservableCollection<Field<T>> _fieldValues;
}

如果T始终考虑到特定的Container参数类型,那么您当然可以对其进行硬编码:

class Container : BindableBase
{
    private ObservableCollection<Field<SomeSpecificType>> _fieldValues;
}

要创建通用Container<T>类的实例,请使用与任何泛型类型相同的语法。例如,如果Tint,您可以使用:

new Container<int>()

然后,您可以在更新的示例中指定FieldValues属性。即:

FieldValues = new ObservableCollection<Field<int>>()