[英]How to invoke Constructors by String in C# (i.e. by Reflection)?
[英]c#: how to convert string to custom template type (i.e. implement “T convertTo<T>(string)”)
我想要一个可以将“string”转换为给定类型的函数TIe我想实现这样的函数:
T convertTo<T>(string stringToConvert)
T实际上可以是简单类型或枚举,但我不知道如何在运行时检查实际的T类型。 即我不能写那样的东西:
if (T instanceof MyEnum) { return MyEnum.Parse(stringToConvert); }
那我该如何实现我的功能呢?
return (T)Enum.Parse(typeof(T), stringToConvert);
if (typeof(T) == typeof(MyEnum))
return (T)Enum.Parse(typeof(T), stringToConvert);
最后我用这种方式实现了函数:
private static T ConvertFromString<T>(string text)
{
if (typeof(Enum).IsAssignableFrom(typeof(T)))
{
try
{
return (T)Enum.Parse(typeof(T), text);
}
catch (ArgumentException e)
{
return default(T);
}
}
return (T)Convert.ChangeType(text, typeof(T));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.