public static void Main() { // equivalent to TypeConvert.Default.ChangeType object value = TypeConvert.ChangeType("1.5", typeof(double)); Console.WriteLine(value + " " + value.GetType().Name); // 1.5 Double Func <object, object> converter = TypeConvert.GetConverter(typeof(string), typeof(char)); value = converter("c"); Console.WriteLine(value + " " + value.GetType().Name); // c char value = converter("5"); Console.WriteLine(value + " " + value.GetType().Name); // 5 char // prevents numeric overflow value = ((long)int.MaxValue) + 1; bool success = TypeConvert.Default.TryChangeType(value, typeof(int), out object result); Console.WriteLine(success + " " + (result ?? "null")); // False null // Enum conversions are case sensitive value = TypeConvert.Default.ChangeType(DayOfWeek.Friday.ToString(), typeof(DayOfWeek)); Console.WriteLine(value + " " + value.GetType().Name); // Friday DayOfWeek value = TypeConvert.ChangeType("1", typeof(BigInteger)); Console.WriteLine(value + " " + value.GetType().Name); // 1 BigInteger Console.ReadKey(); }
/// <summary> /// This method is used by SetValue or by outside /// </summary> /// <param name="fieldName"></param> /// <param name="value"></param> /// <param name="clean"></param> internal void SetValueWithFlag(string fieldName, object value, bool clean) { if (!_metadata.ContainsField(fieldName)) { throw new ArgumentException("The field name does not exist", "fieldName"); } string lowerName = fieldName.ToLower(); Type destType = DataTypeConvert.ToSysType(_metadata[fieldName].DataType, _metadata[fieldName].Nullable); value = TypeConvert.ChangeType(value, destType); object oldValue = null; _fieldValues.TryGetValue(lowerName, out oldValue); bool changed = oldValue != value; if (changed) { if (clean) { _fieldValues[lowerName] = value; } else { _dirtyValues[lowerName] = value; ReportFieldChanged(fieldName, value); } } }
public void TestBoolean() { for (int i = 0; i < NumericTypes.Length; i++) { Type type = NumericTypes[i]; object val = TypeConvert.ChangeType(true, type); Assert.IsNotNull(val); Type resultTy = val.GetType(); Assert.AreEqual(type, resultTy); val = TypeConvert.ChangeType(false, type); Assert.IsNotNull(val); resultTy = val.GetType(); Assert.AreEqual(type, resultTy); } for (int i = 0; i < OneValues.Length; i++) { object oneVal = OneValues[i]; object val = TypeConvert.ChangeType(oneVal, typeof(bool)); Assert.IsNotNull(val); Type type = val.GetType(); Assert.AreEqual(type, typeof(bool)); } for (int i = 0; i < ZeroValues.Length; i++) { object zeroVal = ZeroValues[i]; object val = TypeConvert.ChangeType(zeroVal, typeof(bool)); Assert.IsNotNull(val); Type type = val.GetType(); Assert.AreEqual(type, typeof(bool)); } }
public void ToSelf() { foreach (Type type in ParseTypes.Where(t => !t.IsClass)) { object value = Activator.CreateInstance(type); object result = TypeConvert.ChangeType(value, type); Assert.AreEqual(result, value); Assert.AreEqual(result.GetType(), value.GetType()); } }
public T GetValue <T>(string fieldName) { string textValue = GetValue(fieldName); if (textValue == null) { return(default(T)); } else { return((T)TypeConvert.ChangeType(textValue, typeof(T))); } }
static public void WriteDCToEntity(ExtensibleDC dc, ExtensibleEntity entity) { EntityMetadata entityMetadata = ExtensibleEntity.GetEntityMetadata(entity.GetType()); FieldMetadata[] fields = entityMetadata.Fields; for (int i = 0; i < fields.Length; i++) { //if (string.Compare(fields[i].Name, entityMetadata.Key, true) == 0)//skip the key fields // continue; if (!dc.Contains(fields[i].Name)) { continue; } FieldMetadata field = fields[i]; object value = TypeConvert.ChangeType(dc.GetValue(field.Name), DataTypeConvert.ToSysType(field.DataType, field.Nullable)); entity.SetValue(field.Name, value); } }
public void TestNumericsConvert() { for (int i = 0; i < ZeroValues.Length; i++) { object zeroVal = ZeroValues[i]; object oneVal = OneValues[i]; foreach (Type type in NumericTypes) { object result = TypeConvert.ChangeType(zeroVal, type); Type zeroValType = zeroVal.GetType(); Type resultType = result?.GetType(); Assert.IsNotNull(result); Assert.AreEqual(type, resultType); object result2 = TypeConvert.ChangeType(oneVal, type); Assert.IsNotNull(result2); Assert.AreEqual(type, result2.GetType()); Assert.IsTrue(result.ToString() == "0" || result.ToString() == "0.0"); Assert.IsTrue(result2.ToString() == "1" || result2.ToString() == "1.0"); } } }
public void TestParse() { for (int i = ParseTypes.ToList().IndexOf(typeof(DateTime)); i < ParseTypes.Length; i++) { string str = ParseValues[i].ToString(); Type type = ParseTypes[i]; object result = TypeConvert.ChangeType(str, type); Assert.IsTrue(result != null); Assert.AreEqual(str, result.ToString()); // Custom Booleans } for (int i = 0; i < MaxValues.Length; i++) { object maxVal = MaxValues[i]; object minVal = MinValues[i]; object zeroVal = ZeroValues[i]; object oneVal = OneValues[i]; Assert.AreEqual(TypeConvert.ChangeType(maxVal.ToString(), maxVal.GetType()).ToString(), maxVal.ToString()); Assert.AreEqual(TypeConvert.ChangeType(minVal.ToString(), minVal.GetType()).ToString(), minVal.ToString()); Assert.AreEqual(TypeConvert.ChangeType(zeroVal.ToString(), zeroVal.GetType()), zeroVal); Assert.AreEqual(TypeConvert.ChangeType(oneVal.ToString(), oneVal.GetType()), oneVal); } }
public void TestChar() { for (int i = 0; i < NumericTypes.Length - 3; i++) { // do not use float, double, decimal Type type = NumericTypes[i]; if (type == typeof(float) || type == typeof(decimal) || type == typeof(double)) { continue; } object val = TypeConvert.ChangeType((char)5, type); Assert.IsNotNull(val); Type resultTy = val.GetType(); Assert.AreEqual(type, resultTy); val = TypeConvert.ChangeType((char)0, type); Assert.IsNotNull(val); resultTy = val.GetType(); Assert.AreEqual(type, resultTy); } for (int i = 0; i < OneValues.Length - 3; i++) { object oneVal = OneValues[i]; object val = TypeConvert.ChangeType(oneVal, typeof(char)); Assert.IsNotNull(val); Type type = val.GetType(); Assert.AreEqual(type, typeof(char)); } for (int i = 0; i < ZeroValues.Length - 3; i++) { object zeroVal = ZeroValues[i]; object val = TypeConvert.ChangeType(zeroVal, typeof(char)); Assert.IsNotNull(val); Type type = val.GetType(); Assert.AreEqual(type, typeof(char)); } }
public void SetPropertyValue <T>(int propType, T value) { string textValue = (string)TypeConvert.ChangeType <string>(value); SetPropertyValue(propType, textValue); }
public T GetPropertyValue <T>(int propType) { string textValue = GetPropertyValue(propType); return(TypeConvert.ChangeType <T>(textValue)); }
protected IEnumerable <string> GenerateInsertScripts(IExtDataRecord dataRow, EntityMetadata rowMetaData) { List <string> scripts = new List <string>(); FieldMetadata[] preDefFields = rowMetaData.PreDefinedFields; FieldMetadata[] extFields = rowMetaData.ExtensionFields; StringBuilder sb = new StringBuilder(); sb.Append("INSERT INTO ").Append(rowMetaData.SourceName).Append(" ( "); bool addFlag = false; for (int i = 0; i < preDefFields.Length; i++) { object value = null; if (!dataRow.TryGetValue(preDefFields[i].Name, out value)) { continue; //value not exists. Insert the least values } if (addFlag) { sb.Append(", "); } sb.Append(preDefFields[i].ColumnName); addFlag = true; } sb.Append(") VALUES ( "); addFlag = false; for (int i = 0; i < preDefFields.Length; i++) { object value = null; if (!dataRow.TryGetValue(preDefFields[i].Name, out value)) { continue; //value not exists. Insert the least values } if (addFlag) { sb.Append(", "); } sb.Append(SqlFormat.ToSqlValueString(value)); addFlag = true; } sb.Append(")"); scripts.Add(sb.ToString()); if (extFields == null || extFields.Length == 0) { return(scripts); } string recordIdStringValue = SqlFormat.ToSqlValueString(dataRow.GetValue(rowMetaData.Key)); string extensionTable = string.IsNullOrEmpty(rowMetaData.ExtensionTable) ? Consts.DefExtensionTable : rowMetaData.ExtensionTable; foreach (FieldMetadata extField in extFields) { object value = null; if (!dataRow.TryGetValue(extField.Name, out value)) { continue; } value = TypeConvert.ChangeType <string>(value); sb = new StringBuilder(); sb.Append("INSERT INTO ").Append(extensionTable). Append("(RecordId, FieldId, Value) VALUES (").Append(recordIdStringValue). Append(",").Append(SqlFormat.ToSqlValueString(extField.Id)). Append(",").Append(SqlFormat.ToSqlValueString(value)).Append(")"); scripts.Add(sb.ToString()); } return(scripts); }
protected IEnumerable <string> GenerateUpdateScripts(IExtDataRecord dataRow, EntityMetadata rowMetaData, IEnumerable <string> dirtyFields) { List <string> scripts = new List <string>(); List <string> preDefDirtyFields = new List <string>(); List <string> extDirtyFields = new List <string>(); foreach (string dirtyField in dirtyFields) { if (!rowMetaData.ContainsField(dirtyField)) { continue; } if (!rowMetaData[dirtyField].IsExtension) { preDefDirtyFields.Add(dirtyField); } else { extDirtyFields.Add(dirtyField); } } //update predefined fields if (preDefDirtyFields.Count > 0) { StringBuilder sb = new StringBuilder(); sb.Append("UPDATE ").Append(rowMetaData.SourceName).Append(" SET "); for (int i = 0; i < preDefDirtyFields.Count; i++) { sb.Append(preDefDirtyFields[i]).Append(" = "). Append(SqlFormat.ToSqlValueString(dataRow.GetValue(preDefDirtyFields[i]))); if (i != preDefDirtyFields.Count - 1) { sb.Append(", "); } } sb.Append(" WHERE ").Append(GetConditionClause(dataRow, rowMetaData.KeyFieldNames)); scripts.Add(sb.ToString()); } //uppdate extension values if (extDirtyFields.Count > 0) { string recordIdStringValue = SqlFormat.ToSqlValueString(dataRow.GetValue(rowMetaData.Key)); string extensionTable = string.IsNullOrEmpty(rowMetaData.ExtensionTable) ? Consts.DefExtensionTable : rowMetaData.ExtensionTable; foreach (string extFieldName in extDirtyFields) { object value = dataRow.GetValue(extFieldName); value = TypeConvert.ChangeType <string>(value); StringBuilder sb = new StringBuilder(); sb.Append("DELETE FROM ").Append(extensionTable). Append(" WHERE RecordId=").Append(recordIdStringValue). Append(" AND FieldId=").Append(SqlFormat.ToSqlValueString(rowMetaData[extFieldName].Id)); scripts.Add(sb.ToString()); sb = new StringBuilder(); sb.Append("INSERT INTO ").Append(extensionTable). Append("(RecordId, FieldId, Value ) VALUES (").Append(recordIdStringValue). Append(",").Append(SqlFormat.ToSqlValueString(rowMetaData[extFieldName].Id)). Append(",").Append(SqlFormat.ToSqlValueString(value)).Append(")"); scripts.Add(sb.ToString()); } } //updates extension fields return(scripts); }