我实际上有一种从Feature对象的特殊数据行读取值的方法:
private static T GetRowValueByMethod<T>(Feature feature, string fieldName)
{
return (T) feature.GetDataRow(fieldName)[fieldName];
}
这适用于大多数值,但Guid
我遇到了问题。如果该字段包含System.Guid
对象,那么一切都很好。但如果它包含一个字符串值,那么我得到一个错误,因为Guid不能从字符串中隐式转换。
要从字符串中获取Guid
对象,必须通过Guid构造函数创建新的Guid对象。
但是这里不允许返回Guid
对象。
无法创建新的T
对象。
创建Guid
对象并转换为T
也是不可能的。那该怎么办?
我试过类似的东西,但这不起作用(警告:假代码)
private static T GetRowValueByMethod<T>(Feature feature, string fieldName)
{
var obj = feature.GetDataRow(fieldName)[fieldName];
if (obj.ToString().IsAGuid())
{
return (T) new Guid(obj.ToString());
}
return (T) obj;
}
有没有人有这方面的好解决方案?
答案 0 :(得分:2)
您正在尝试将Guid
投射到T
。由于没有从Guid
转换为T
,因此无法进行此操作。如果您首先将Guid
值放入object
。
试试这个:
private static T GetRowValueByMethod<T>(Feature feature, string fieldName)
{
object obj = feature.GetDataRow(fieldName)[fieldName];
if (obj.ToString().IsAGuid())
obj = new Guid(obj.ToString());
return (T)obj;
}