3

重複の可能性:
C#ジェネリックリスト<T> Tの型を取得する方法は?

リスト変数があり、そのリストの型を取得して、その型に2番目の変数をキャストしたいと思います。わかりやすくするために、以下のコードを追加しました。

現在、私は次のものを持っています:

return _ValueList.Any<FieldType>(x => x.Equals((FieldType)fieldValueObject));

私はこのようなことをしたい:

Type valueType = _ValueList.GetType();

return _ValueList.Any<FieldType>(x => x.Equals((valueType)fieldValueObject));

どんな助けでもありがたいです。

アップデート:

fieldValueObjectの型がInt16で、Int32にキャストしようとすると、無効なキャスト例外がスローされます。

アップデート2:

私は次の解決策を使用しました:

        if (fieldValueObject.GetType() == typeof(Int16))
        {
            fieldValueObject = Convert.ToInt32(fieldValueObject);
        }
        return _ValueList.Any<FieldType>(x => x.Equals(fieldValueObject));

きれいではありませんが、機能します。

4

1 に答える 1

0
public bool ContainsAny<T>(List<T> valueList, T fieldValueObject)
{
    return valueList.Any(x => x.Equals(fieldValueObject));
}

また

public bool ContainsAny<T>(List<T> valueList, object fieldValueObject)
{
    return valueList.Any(x => x.Equals((T)fieldValueObject));
}

2 番目は InvalidCastException をスローする可能性があることに注意してください。

于 2012-07-26T08:53:55.827 に答える