访问IList <t>类型的某个项目

时间:2017-11-25 00:34:47

标签: c# list

我正在尝试从IList访问特定数据。

public static void export(IList<T> data){
var test = data[1];
var x = test.day;
}

这是我得到的var测试的值和类型: test value and type

即使将类型设置为我的模型类型,代码也将其视为T. 如何访问“日期”值?

这是我的第一篇文章,如果事情发生故障,我很抱歉,提前谢谢。

亲切的问候。

2 个答案:

答案 0 :(得分:2)

您如何知道T实际上有day属性? T可以是任何东西。如果您希望列表包含所有workingHoursDbXls个对象,那么我建议不要将此方法设为通用:

public static void export(IList<workingHoursDbXls> data)
{
    var test = data[1];
    var x = test.day;
}

或者,您可以指定一些约束,表示您不关心T类型,只要它具有day属性:

public interface IHaveADay
{
    string day { get; }
}

public static void export<T>(IList<T> data) where T : IHaveADay
{
    var test = data[1];
    var x = test.day;
}

然后,您需要更新workingHoursDbXls课程的声明,说明它实施了IHaveADay

public class workingHoursDbXls : IHaveADay
{
    ...
}

答案 1 :(得分:-1)

如果访问day属性,则该方法仅适用于具有该属性的对象,并且仅当您将T约束到公开它的接口时。

public static void export<T>(IList<T> data) where T: workingHoursDbXls
{
    var test = data[1];
    var x = test.day;
}