public void RegisterMapping(ICompilerInputContract contract, ICompilerInputContractMapping dataRowContractMapping) { var properties = contract.Properties.Select(p => new CompilerInputContractProperty(p)).ToList(); var fieldMappings = dataRowContractMapping.Mapping.ToList(); var ixPropertyNames = new HashSet<string>(this.m_columnInfos.Select(c => c.ColumnName), StringComparer.OrdinalIgnoreCase); //if (fieldMappings.Count > properties.Count) //{ // m_compilerOutputBuilder.AddError( // m_compilerNotificationMessageBuilder.TooFewTableTypeInterfaceMappingItems(m_fullName, contract.InterfaceName, properties.Count, fieldMappings.Count)); //} var unexpectedColumnMappingNames = fieldMappings.Where(m => !(this.m_ixColumnNames.Contains(m.DataFieldName))); var mapping = new Mapping<DataColumnInfo, CompilerInputContractProperty>( dataRowContractMapping .Mapping .ToDictionary(m => m.DataFieldName, m => m.ContractPropertyName, StringComparer.Ordinal)); var pairs = mapping.Map(this.m_columnInfos, properties); foreach (var pair in pairs) { this.m_interfaceMappings.Add( new CompilerOutputInterfacePropertyMapping { InterfaceName = dataRowContractMapping.InterfaceName, ColumnName = pair.Source.ColumnName, PropertyName = pair.Target.PropertyName, PropertyType = pair.Target.PropertyType }); } }
internal CompilerInputContract(ICompilerInputContract other, int ordinal = 0) { this.Ordinal = ordinal; Debug.Assert(!ReferenceEquals(other, null), "other is null"); this.InterfaceName = other.InterfaceName; if(!ReferenceEquals(other.Properties, null)) { foreach(var item in other.Properties) { if(!ReferenceEquals(item, null)) { var clone = new CompilerInputContractProperty(item, this.Properties.Count ); this.Properties.Add( clone ); } } } OnCreated(); }