C# - IDataReader to Object mapping using generics

后端 未结 10 747
情歌与酒
情歌与酒 2020-12-16 19:07

How can I map a DataReader object into a class object by using generics?

For example I need to do the following:

public class Mapper
    {
          


        
10条回答
  •  猫巷女王i
    2020-12-16 19:58

    what about following

    abstract class DataMapper
    {
        abstract public object Map(IDataReader);
    }
    
    class BookMapper : DataMapper
    {
       override public object Map(IDataReader reader)
       {
           ///some mapping stuff
           return book;
       }
    }
    
    public class Mapper
    {
        public static List MapObject(IDataReader dr)
        {
            List objects = new List();
            DataMapper myMapper = getMapperFor(T);
            while (dr.Read())
            {
                objects.Add((T)myMapper(dr));
            }
    
            return objects;
        }
    
        private DataMapper getMapperFor(T myType)
        {
           //switch case or if or whatever
           ...
           if(T is Book) return bookMapper;
    
        }
    }
    

    Don't know if it is syntactically correct, but I hope u get the idea.

提交回复
热议问题