Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
DataColumnMapping.cs
Go to the documentation of this file.
6
7namespace System.Data.Common;
8
9[TypeConverter(typeof(DataColumnMappingConverter))]
11{
13 {
14 public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
15 {
16 if (typeof(InstanceDescriptor) == destinationType)
17 {
18 return true;
19 }
20 return base.CanConvertTo(context, destinationType);
21 }
22
23 public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
24 {
25 if (null == destinationType)
26 {
27 throw ADP.ArgumentNull("destinationType");
28 }
29 if (typeof(InstanceDescriptor) == destinationType && value is DataColumnMapping)
30 {
31 DataColumnMapping dataColumnMapping = (DataColumnMapping)value;
32 object[] arguments = new object[2] { dataColumnMapping.SourceColumn, dataColumnMapping.DataSetColumn };
33 Type[] types = new Type[2]
34 {
35 typeof(string),
36 typeof(string)
37 };
38 ConstructorInfo constructor = typeof(DataColumnMapping).GetConstructor(types);
39 return new InstanceDescriptor(constructor, arguments);
40 }
41 return base.ConvertTo(context, culture, value, destinationType);
42 }
43 }
44
46
47 private string _dataSetColumnName;
48
49 private string _sourceColumnName;
50
51 [DefaultValue("")]
52 public string DataSetColumn
53 {
54 get
55 {
56 return _dataSetColumnName ?? string.Empty;
57 }
58 [param: AllowNull]
59 set
60 {
62 }
63 }
64
66 {
67 get
68 {
69 return _parent;
70 }
71 set
72 {
73 _parent = value;
74 }
75 }
76
77 [DefaultValue("")]
78 public string SourceColumn
79 {
80 get
81 {
82 return _sourceColumnName ?? string.Empty;
83 }
84 [param: AllowNull]
85 set
86 {
87 if (Parent != null && ADP.SrcCompare(_sourceColumnName, value) != 0)
88 {
90 }
92 }
93 }
94
96 {
97 }
98
99 public DataColumnMapping(string? sourceColumn, string? dataSetColumn)
100 {
101 SourceColumn = sourceColumn;
102 DataSetColumn = dataSetColumn;
103 }
104
106 {
107 DataColumnMapping dataColumnMapping = new DataColumnMapping();
108 dataColumnMapping._sourceColumnName = _sourceColumnName;
109 dataColumnMapping._dataSetColumnName = _dataSetColumnName;
110 return dataColumnMapping;
111 }
112
113 [EditorBrowsable(EditorBrowsableState.Advanced)]
114 public DataColumn? GetDataColumnBySchemaAction(DataTable dataTable, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.PublicProperties)] Type? dataType, MissingSchemaAction schemaAction)
115 {
116 return GetDataColumnBySchemaAction(SourceColumn, DataSetColumn, dataTable, dataType, schemaAction);
117 }
118
119 [EditorBrowsable(EditorBrowsableState.Advanced)]
120 public static DataColumn? GetDataColumnBySchemaAction(string? sourceColumn, string? dataSetColumn, DataTable dataTable, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.PublicProperties)] Type? dataType, MissingSchemaAction schemaAction)
121 {
122 if (dataTable == null)
123 {
124 throw ADP.ArgumentNull("dataTable");
125 }
126 if (string.IsNullOrEmpty(dataSetColumn))
127 {
128 return null;
129 }
130 DataColumnCollection columns = dataTable.Columns;
131 int num = columns.IndexOf(dataSetColumn);
132 if (0 <= num && num < columns.Count)
133 {
134 DataColumn dataColumn = columns[num];
135 if (!string.IsNullOrEmpty(dataColumn.Expression))
136 {
137 throw ADP.ColumnSchemaExpression(sourceColumn, dataSetColumn);
138 }
139 if (null == dataType || dataType.IsArray == dataColumn.DataType.IsArray)
140 {
141 return dataColumn;
142 }
143 throw ADP.ColumnSchemaMismatch(sourceColumn, dataType, dataColumn);
144 }
145 return CreateDataColumnBySchemaAction(sourceColumn, dataSetColumn, dataTable, dataType, schemaAction);
146 }
147
148 internal static DataColumn CreateDataColumnBySchemaAction(string sourceColumn, string dataSetColumn, DataTable dataTable, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields | DynamicallyAccessedMemberTypes.PublicProperties)] Type dataType, MissingSchemaAction schemaAction)
149 {
150 if (string.IsNullOrEmpty(dataSetColumn))
151 {
152 return null;
153 }
154 switch (schemaAction)
155 {
156 case MissingSchemaAction.Add:
157 case MissingSchemaAction.AddWithKey:
158 return new DataColumn(dataSetColumn, dataType);
159 case MissingSchemaAction.Ignore:
160 return null;
161 case MissingSchemaAction.Error:
162 throw ADP.ColumnSchemaMissing(dataSetColumn, dataTable.TableName, sourceColumn);
163 default:
164 throw ADP.InvalidMissingSchemaAction(schemaAction);
165 }
166 }
167
168 public override string ToString()
169 {
170 return SourceColumn;
171 }
172}
static ArgumentNullException ArgumentNull(string parameter)
Definition ADP.cs:699
static int SrcCompare(string strA, string strB)
Definition ADP.cs:651
static InvalidOperationException ColumnSchemaMissing(string cacheColumn, string tableName, string srcColumn)
Definition ADP.cs:204
static InvalidOperationException ColumnSchemaExpression(string srcColumn, string cacheColumn)
Definition ADP.cs:194
static InvalidOperationException ColumnSchemaMismatch(string srcColumn, Type srcType, DataColumn column)
Definition ADP.cs:199
static ArgumentOutOfRangeException InvalidMissingSchemaAction(MissingSchemaAction value)
Definition ADP.cs:134
override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
static DataColumn CreateDataColumnBySchemaAction(string sourceColumn, string dataSetColumn, DataTable dataTable, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields|DynamicallyAccessedMemberTypes.PublicProperties)] Type dataType, MissingSchemaAction schemaAction)
DataColumnMappingCollection? Parent
DataColumnMappingCollection _parent
DataColumnMapping(string? sourceColumn, string? dataSetColumn)
static ? DataColumn GetDataColumnBySchemaAction(string? sourceColumn, string? dataSetColumn, DataTable dataTable, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields|DynamicallyAccessedMemberTypes.PublicProperties)] Type? dataType, MissingSchemaAction schemaAction)
DataColumn? GetDataColumnBySchemaAction(DataTable dataTable, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicFields|DynamicallyAccessedMemberTypes.PublicProperties)] Type? dataType, MissingSchemaAction schemaAction)
DataColumnCollection Columns
Definition DataTable.cs:327
bool IsArray
Definition Type.cs:71