public void GivenIHaveSpecificationForType(string type, Table table) { var targetType = Assembly .GetExecutingAssembly() .GetTypes() .FirstOrDefault(x => x.FullName.EndsWith(type)); var properties = targetType .GetProperties(BindingFlags.Instance | BindingFlags.Public) .ToDictionary(info => info.Name); var typeMappings = table.CreateSet <FixedLengthTypeMapping>().ToArray(); var container = new FieldsContainer <IFixedFieldSettingsContainer>(); foreach (var typeMapping in typeMappings) { var propertyInfo = properties[typeMapping.Name]; var settings = new FixedFieldSettingsConstructor(propertyInfo); settings.WithLength(typeMapping.Length); if (!string.IsNullOrEmpty(typeMapping.NullValue)) { settings.AllowNull(typeMapping.NullValue); } switch (typeMapping.Padding) { case Padding.Right: settings.WithRightPadding(typeMapping.PaddingCharElement); break; case Padding.Left: settings.WithLeftPadding(typeMapping.PaddingCharElement); break; } container.AddOrUpdate(propertyInfo, settings); } var descriptor = new LayoutDescriptorBase <IFixedFieldSettingsContainer>(container) { HasHeader = false }; ScenarioContext.Current.Add(() => descriptor, descriptor); }
public void GivenIHaveSpecificationForType(string type, Table table) { var targetType = Assembly .GetExecutingAssembly() .GetTypes() .FirstOrDefault(x => x.FullName.EndsWith(type)); var properties = targetType .GetProperties(BindingFlags.Instance | BindingFlags.Public) .ToDictionary(info => info.Name); var typeMappings = table.CreateSet<FixedLengthTypeMapping>().ToArray(); var container = new FieldsContainer<IFixedFieldSettingsContainer>(); foreach (var typeMapping in typeMappings) { var propertyInfo = properties[typeMapping.Name]; var settings = new FixedFieldSettingsConstructor(propertyInfo); settings.WithLength(typeMapping.Length); if (!string.IsNullOrEmpty(typeMapping.NullValue)) { settings.AllowNull(typeMapping.NullValue); } switch (typeMapping.Padding) { case Padding.Right: settings.WithRightPadding(typeMapping.PaddingCharElement); break; case Padding.Left: settings.WithLeftPadding(typeMapping.PaddingCharElement); break; } container.AddOrUpdate(propertyInfo, settings); } var descriptor = new LayoutDescriptorBase<IFixedFieldSettingsContainer>(container) { HasHeader = false }; ScenarioContext.Current.Add(() => descriptor, descriptor); }