使用Func,Action和Generics进行不明确的属性赋值

时间:2014-10-15 17:37:13

标签: c# generics

我循环遍历SqlDataReader,并设置对象的属性。我正在做很多重复的工作,我想知道这是否是使用4.0委托框架和泛型的好地方。我对blackbox这个框架(实体,MVC等)不感兴趣。

ConvertReaderToMyCustomType是我当前的方法,以及相关的扩展方法HasColumn

public static List<MyCustomType> ConvertReaderToMyCustomType(this SqlDataReader reader)
{
    var tempCollection = new List<MyCustomType>();
    int colX = reader.GetOrdinal("PropertyX");        
    while (reader.Read())
    {
        MyCustomType tracking = new MyCustomType();
        if (reader.HasColumn("PropertyX"))
        {
            tracking.PropertyX = reader[colX];
            //etc.
        }
    }
}

public static bool HasColumn(this IDataRecord dr, string columnName)
{
    for (int i = 0; i < dr.FieldCount; i++)
    {
        if (dr.GetName(i).Equals(columnName, StringComparison.InvariantCultureIgnoreCase))
            return true;
    }
    return false;
}

另外,如果tracking.PropertyX是DateTime怎么办?如果存在多种类型的多个属性,那么如何以通用方式处理转换?

0 个答案:

没有答案