私は実際に 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;
}
誰かがこれに対する良い解決策を持っていますか?