Vel*_*rev 11 c# asp.net generics casting
我有一个泛型方法,它将字符串中的id(例如,从ASP.NET表单上的HiddenField的值中检索到)转换为目标类型并对其执行某些操作.
private void MyMethod<T>(string rawId, Action<T> doSomethingWithId)
{
T id = (T)Convert.ChangeType(rawId, typeof(T));
doSomethingWithId(id);
}
Run Code Online (Sandbox Code Playgroud)
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));
Run Code Online (Sandbox Code Playgroud)
现在这给出了一个错误(在编译时),Guid无法转换为类型T.
不太确定如何解决这个问题.有什么建议?
SSh*_*bly 23
以下代码可以正常转换为Guid.核实
id = (T)TypeDescriptor.GetConverter(typeof(T)).ConvertFromInvariantString(text);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5744 次 |
最近记录: |