इस प्रयास करें:
public object ChangeType(object value, Type type)
{
if (value == null && type.IsGenericType) return Activator.CreateInstance(type);
if (value == null) return null;
if (type == value.GetType()) return value;
if (type.IsEnum)
{
if (value is string)
return Enum.Parse(type, value as string);
else
return Enum.ToObject(type, value);
}
if (!type.IsInterface && type.IsGenericType)
{
Type innerType = type.GetGenericArguments()[0];
object innerValue = ChangeType(value, innerType);
return Activator.CreateInstance(type, new object[] { innerValue });
}
if (value is string && type == typeof(Guid)) return new Guid(value as string);
if (value is string && type == typeof(Version)) return new Version(value as string);
if (!(value is IConvertible)) return value;
return Convert.ChangeType(value, type);
}
स्रोत
2018-01-09 08:19:57
ConvertFromInvariantString उपयोग करने के साथ सावधान रहें। यदि आपका प्रकार डेटटाइम है और आपके पास अंतरराष्ट्रीय दिनांक प्रारूप हैं, तो यह उड़ाएगा। मैंने इस जवाब के आधार पर वास्तव में एक कठिन-से-खोजने वाली बग को ट्रैक किया। –
@DPeden वास्तव में, उन्हें मेल खाना चाहिए - मेरा उपयोग यहां धारणा का उपयोग कर रहा था कि धारावाहिक डेटा आमतौर पर एक परिवर्तनीय प्रारूप –
हाँ में होना चाहिए, सहमत है। मैंने अभी भी आपका जवाब ऊपर उठाया क्योंकि यह बहुत उपयोगी है। बस इस जलाशय को दूसरों के लिए इंगित करते हुए मुझे जला दिया। –