public object CreateObject(DbDataReader dataReader) { if (CreateDelegate == null) { CreateDelegate = new FastCreate(Type, Mapper); } return(CreateDelegate.Create(dataReader)); }
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; }
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); }
internal void SetValueObjectAccessors(FastCreate fastCreate, Action <object, object> setter, Func <object, object> getter) { this.fastCreate = fastCreate; valueObjectSetter = setter; valueObjectGetter = getter; }
public void Test31() { Assert.Throws<Exception>(() => { var fastCreate = new FastCreate(typeof(ContentBase), new MapperCollection()); }); }
public void SetMemberAccessor(MemberAccessor memberAccessor, FastCreate fastCreate, Type listType) { _listType = listType; _memberAccessor = memberAccessor; _creator = fastCreate; }
public object CreateObject(DbDataReader dataReader) { if (CreateDelegate == null) CreateDelegate = new FastCreate(Type, Mapper); return CreateDelegate.Create(dataReader); }
public PocoData(Type type, MapperCollection mapper, FastCreate creator) : this() { CreateDelegate = creator; Type = type; Mapper = mapper; }
public void SetDynamicMemberAccessor(FastCreate fastCreate) { _creator = fastCreate; }