3

可能重复:
C#泛型列表<T>如何获取T的类型?

我有一个列表变量,我想获取该列表的类型并将第二个变量转换为该类型。为了清楚起见,我添加了下面的代码。

目前我有以下内容:

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));
}

请注意,第二个可能会引发 InvalidCastException。

于 2012-07-26T08:53:55.827 回答