问题描述
|
在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>
。 “ 4”用于映射操作-将数据从一种形式转换为另一种形式。