public ValueToString(IFormatProvider[] providers, char[] delimiters, Func <Type, MemberInfo, int> membersOrder = null) { if (!DataType.IsPrimitiveType(typeof(T)) && !typeof(T).HasDefaultConstructor()) { throw new NotSupportedException("No default constructor."); } bool isSupported = DataTypeUtils.IsAllPrimitive(typeof(T)); if (!isSupported) { throw new NotSupportedException("Not all types are primitive."); } var countOfType = DataType.IsPrimitiveType(typeof(T)) ? 1 : DataTypeUtils.GetPublicMembers(typeof(T), membersOrder).Count(); if (providers.Length != countOfType) { throw new ArgumentException("providers.Length != dataType.Length"); } Providers = providers; Delimiters = delimiters; Type = typeof(T); MembersOrder = membersOrder; LambdaFromString = CreateFromStringMethod(); fromString = LambdaFromString.Compile(); LambdaToString = CreateToStringMethod(); toString = LambdaToString.Compile(); }
public DataToObjects(Type type, Func <Type, MemberInfo, int> membersOrder = null) { if (!DataType.IsPrimitiveType(type) && !type.HasDefaultConstructor()) { throw new NotSupportedException("No default constructor."); } bool isSupported = DataTypeUtils.IsAllPrimitive(type); if (!isSupported) { throw new NotSupportedException("Not all types are primitive."); } Type = type; MembersOrder = membersOrder; to = CreateToMethod().Compile(); from = CreateFromMethod().Compile(); }
public ValueToObjects(Func <Type, MemberInfo, int> membersOrder = null) { if (!DataType.IsPrimitiveType(typeof(T)) && !typeof(T).HasDefaultConstructor()) { throw new NotSupportedException("No default constructor."); } bool isSupported = DataTypeUtils.IsAllPrimitive(typeof(T)); if (!isSupported) { throw new NotSupportedException("Not all types are primitive."); } Type = typeof(T); MembersOrder = membersOrder; LambdaFromObjects = CreateFromObjectsMethod(); fromObjects = LambdaFromObjects.Compile(); LambdaToObjects = CreateToObjectsMethod(); toObjects = LambdaToObjects.Compile(); }