这是我的代码,用于检查值是否可以转换为给定类型。
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
}
}
这应该是应有的。现在我需要仅使用自定义格式从日期字符串转换为DateTime
(比如说格式:&#34; MM.DD.YYYY HH:mm:ss&#34;)。我怎样才能做到这一点?
我应该单独处理DateTime场景吗?像:
if(typeof(T) == typeof(DateTime)) {...}
else {...}
我正在寻找能否使用现有代码进行少量更改。感谢。
答案 0 :(得分:0)
如果您将方法签名更改为与其他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
}