IMRM.cs 931 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using Ant.Core;
  2. using Ant.Core.Emit;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Data;
  6. using System.Linq;
  7. using System.Reflection;
  8. using System.Text;
  9. namespace Ant.Mapper
  10. {
  11. public interface IMRM
  12. {
  13. void Map(object instance, IDataReader reader, int ordinal);
  14. }
  15. static class MRMHelper
  16. {
  17. public static IMRM CreateMRM(MemberInfo member)
  18. {
  19. Type type = ClassGenerator.CreateMRMType(member);
  20. IMRM obj = (IMRM)type.GetConstructor(Type.EmptyTypes).Invoke(null);
  21. return obj;
  22. }
  23. }
  24. class MRM : IMRM
  25. {
  26. Action<object, IDataReader, int> _mapper;
  27. public MRM(Action<object, IDataReader, int> mapper)
  28. {
  29. this._mapper = mapper;
  30. }
  31. public void Map(object instance, IDataReader reader, int ordinal)
  32. {
  33. this._mapper(instance, reader, ordinal);
  34. }
  35. }
  36. }