1

我实际上有一种从 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;
    }

有没有人对此有很好的解决方案?

4

1 回答 1

4

您正在尝试将 a 投射GuidT. 这不可能发生,因为没有从Guidto的转换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;
}
于 2013-05-03T13:04:17.493 回答