在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
}
如果类型共享基类或接口,则可以将方法约束到该接口,并直接访问该接口的成员。
如果它们是T
的不相关类型,那么您可能需要考虑为每个类型使用单独的方法重载。这比检查方法内部的类型并单独处理每个类型所产生的混乱要容易维护得多。
也就是说,您可能需要考虑使用Linq的Select
方法,而不是您自己的ConvertData<T>
方法。Select
用于映射操作——将数据从一种形式转换为另一种形式。