private static PropertySetter CreateInstance(Type targetType, string propertyName) { if (!propertyName.Contains('.')) return new PropertySetter(targetType, propertyName); var sourceType = targetType; var names = propertyName.Split('.'); var getters = new List<PropertyGetter>(); foreach (var name in names.Take(names.Length - 1)) { getters.Add(PropertyGetter.Create(sourceType, name)); sourceType = sourceType.GetProperty(name).PropertyType; } var setter = new PropertySetter(sourceType, names.Last()); return new PropertyChainSetter(targetType, propertyName, getters, setter); }
public DataRecordToPropertyMapper(int index, PropertySetter setter, IValueSerializer serializer = null) { _index = index; _setter = setter; _serializer = serializer; }
internal PropertyChainSetter(Type targetType, string propertyName, IEnumerable<PropertyGetter> getters, PropertySetter setter) : base(targetType, propertyName) { _getters = getters; _setter = setter; }