我有以下课程:
<td>Photo</td>
<td style="text-align: center"><img src="<?php base_url() ?>uploads/volunteer/<?php echo $_POST['userfile']; ?>" height="100" width="150"></td>
</tr>
我需要检查所有值是否可以转换为T.如果是,则返回转换后的值&#34;结果&#34;。但如果至少有一个不可转换,我想返回false,结果为null。
我会使用Int32解析,布尔解析......但在这种情况下我不确定类型T.我只是知道它是可比较的。
我该怎么做?
答案 0 :(得分:4)
我使用它,大部分时间都运行良好:
string.IsNullOrEmpty(stringValue)
? default(T)
: (T)TypeDescriptor.GetConverter(typeof(T)).ConvertFromInvariantString(stringValue);
类型描述符还提供CanConvertFrom
方法,允许您提前检查您的类型是否可转换。
问题的完整解决方案是:
public static Boolean TryParse(String[] values, out List<T> result)
{
var converter = TypeDescriptor.GetConverter(typeof(T)); // Store these in a concurrent dictionary if you want to be more efficient
if (!converter.CanConvertFrom(typeof(T)))
{
result = null;
return false;
}
result = values.Select(value => (T)converter.ConvertFromInvariantString(value)).ToList();
return true;
}
答案 1 :(得分:3)
您可以使用TypeConverter
(至少对于那些拥有自己public class Filter<T> where T : IComparable<T>
{
public static Boolean TryParse(String[] values, out List<T> result)
{
result = null;
try
{
TypeConverter converter = TypeDescriptor.GetConverter(typeof(T));
result = values.Select(v => converter.ConvertFromInvariantString(v)).ToList();
return true;
}
catch
{
return false;
}
}
}
的类型,大多数标准类型都是如此):
TypeConverter
对于您的自定义类型,您需要实现自己的val value: String = properties(j).attribute("value").toString
print(value)
。有关如何执行此操作,请参阅this MSDN article。