Exemplo n.º 1
0
 public object CreateObject(DbDataReader dataReader)
 {
     if (CreateDelegate == null)
     {
         CreateDelegate = new FastCreate(Type, Mapper);
     }
     return(CreateDelegate.Create(dataReader));
 }
Exemplo n.º 2
0
        private static void SetupValueObject(PocoColumn pc, FastCreate fastCreate)
        {
            var        memberName      = "Value";
            var        hasIValueObject = pc.MemberInfoData.MemberType.GetTypeWithGenericTypeDefinitionOf(typeof(IValueObject <>));
            MemberInfo property        = string.IsNullOrEmpty(pc.ValueObjectColumnName)
                ? pc.MemberInfoData.MemberType.GetProperties().FirstOrDefault(x => x.Name.IndexOf(memberName, StringComparison.OrdinalIgnoreCase) >= 0)
                                         ?? pc.MemberInfoData.MemberType.GetProperties().First()
                : ReflectionUtils.GetFieldsAndProperties(pc.MemberInfoData.MemberType, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic).First(x => x.Name == pc.ValueObjectColumnName);
            var type = hasIValueObject != null?hasIValueObject.GetGenericArguments().First() : property.GetMemberInfoType();

            var memberAccessor = hasIValueObject != null ? new MemberAccessor(typeof(IValueObject <>).MakeGenericType(type), memberName) : new MemberAccessor(pc.MemberInfoData.MemberType, property.Name);

            pc.SetValueObjectAccessors(fastCreate, (target, value) => memberAccessor.Set(target, value), target => memberAccessor.Get(target));
            pc.ColumnType = type;
        }
Exemplo n.º 3
0
        public InitializedPocoDataBuilder Init()
        {
            var memberInfos = new List <MemberInfo>();
            var columnInfos = GetColumnInfos(Type);

            // init the generator
            _generator = new FastCreate(Type, Mapper);

            // Get table info plan
            _tableInfoPlan = GetTableInfo(Type, columnInfos, memberInfos);

            // Get pocomember plan
            _memberPlans = GetPocoMembers(columnInfos, memberInfos).ToList();

            return(this);
        }
Exemplo n.º 4
0
 internal void SetValueObjectAccessors(FastCreate fastCreate, Action <object, object> setter, Func <object, object> getter)
 {
     this.fastCreate   = fastCreate;
     valueObjectSetter = setter;
     valueObjectGetter = getter;
 }
Exemplo n.º 5
0
 public void Test31()
 {
     Assert.Throws<Exception>(() =>
     {
         var fastCreate = new FastCreate(typeof(ContentBase), new MapperCollection());
     });
 }
Exemplo n.º 6
0
 public void SetMemberAccessor(MemberAccessor memberAccessor, FastCreate fastCreate, Type listType)
 {
     _listType       = listType;
     _memberAccessor = memberAccessor;
     _creator        = fastCreate;
 }
Exemplo n.º 7
0
 public object CreateObject(DbDataReader dataReader)
 {
     if (CreateDelegate == null)
         CreateDelegate = new FastCreate(Type, Mapper);
     return CreateDelegate.Create(dataReader);
 }
Exemplo n.º 8
0
 public PocoData(Type type, MapperCollection mapper, FastCreate creator) : this()
 {
     CreateDelegate = creator;
     Type           = type;
     Mapper         = mapper;
 }
Exemplo n.º 9
0
 public void SetDynamicMemberAccessor(FastCreate fastCreate)
 {
     _creator = fastCreate;
 }
Exemplo n.º 10
0
 public void SetMemberAccessor(MemberAccessor memberAccessor, FastCreate fastCreate, Type listType)
 {
     _listType = listType;
     _memberAccessor = memberAccessor;
     _creator = fastCreate;
 }