这是我检查值是否可以转换为给定类型的代码。
public static object TryParseObject<T>(object valueObject)
{
string value = null;
try
{
value = Convert.ToString(valueObject);
var converter = TypeDescriptor.GetConverter(typeof(T));
if (converter != null)
{
//Cast ConvertFromString(string text) : object to (T)
return (T)converter.ConvertFromString(value);
}
return default(T);
}
catch
{
//Can't parse
}
}
这是应该的。现在我只需要用自定义格式(例如格式:"MM.DD.YYYY HH:MM:ss")将日期字符串转换为DateTime
。我怎样才能做到这一点?
我应该单独处理DateTime场景吗?类似:
if(typeof(T) == typeof(DateTime)) {...}
else {...}
我想看看我是否可以在不做任何更改的情况下使用现有的代码。谢谢
如果将方法签名更改为与其他TryParse..
方法相同
public static bool TryParseObject<T>(object valueObject, out T outValue)
{
//your parsing code
}
然后,您可以为所需的任何类型创建重载。使用分离方法,您的代码保持干净且易于理解
public static bool TryParseObject(object valueObject, out DateTime outValue)
{
const string EXACT_FORMAT = "MM.DD.YYYY HH:mm:ss";
// your parsing to DateTime
}
public static bool TryParseObject(object valueObject, out int outValue)
{
// your parsing to int
}