如何以类型安全的方式从通用对象列表中获取数据

时间:2015-02-14 21:10:03

标签: c# generics

我创建了一个实现该接口的接口和泛型类,以便同一个类的对象可以保存任何类型的数据。我成功创建了它的列表。但是如何以类型安全的方式从列表中读取数据。

public interface Parameter
{
}

public class Parameter<T> : Parameter
{
    public T Value { get; set; }
}

Parameter[] parameters = new Parameter[] { 
    new Parameter<string> { Value = "X" },
    new Parameter<int> { Value = 1 },
};

我应该如何遍历数组并获取单个值?参数接口没有属性Value的声明。

1 个答案:

答案 0 :(得分:0)

您可以在Object界面中声明类型为Parameter的属性;这将允许您访问该值,无论其实际类型如何:

public interface Parameter
{
    object Value { get; set; }
}

public class Parameter<T> : Parameter
{
    public T Value { get; set; }

    // Explicit interface implementation
    object Parameter.Value
    {
        get { return Value; }
        set { Value = (T)value; }
    }
}