【发布时间】:2011-10-27 11:14:33
【问题描述】:
我有一个通用方法,它可以将 id 从字符串(例如,从 ASP.NET 表单上的 HiddenField 的值中检索)转换为目标类型并对其进行处理。
private void MyMethod<T>(string rawId, Action<T> doSomethingWithId)
{
T id = (T)Convert.ChangeType(rawId, typeof(T));
doSomethingWithId(id);
}
T 将是 Guid 或 Int32 并且上面的代码在它是 Guid 时会失败(在运行时),表示从 String 到 Guid 的强制转换是无效的。
然后我想我可能会尝试检查类型,如果是 Guid,则实例化一个新的 Guid:
var id = default(T);
if (id is Guid)
id = new Guid(rawId);
else
id = (T)Convert.ChangeType(rawId, typeof(T));
现在这给出了一个错误(在编译时),Guid 无法转换为类型 T
不太清楚如何解决这个问题。有什么建议吗?
【问题讨论】:
标签: c# asp.net generics casting