使用函数中的T匿名参数验证Linq对象的类型,属性

时间:2011-06-01 00:44:30

标签: linq

在C#中,我有一个可以传递List<T>的公共函数。问题是如何验证T的类型,在每种情况下获取对象的属性?

/// <param name="olddatas">The list of T Linq object, that need to 
/// convert in some column </param>
/// <param name="convertedColumn">example,divide by comma: 
/// "column1,column2,column3"</param>
/// <returns></returns>
public static List<T> ConvertData<T>(List<T> olddatas, string convertedColumn)
{
    foreach (var olddata in olddatas)
    {
        //Pase the type of olddata?
        //Get the property of every column in convertedColumn parameter?
    }
    //return new List<T> with some column data in olddatas are changed
}

1 个答案:

答案 0 :(得分:3)

如果您的类型共享基类或接口,您可以constrain your method到该接口,并直接访问该接口的成员。

如果它们是T的不相关类型,那么您可能需要考虑为每种类型使用单独的方法重载。这比检查方法中的类型和单独处理每种类型所产生的混乱更容易维护。

话虽如此,您可能只想考虑使用Linq的Select方法而不是您自己的ConvertData<T>Select用于映射操作 - 将数据从一种形式转换为另一种形式。