确认对象列表是否为给定类型?

时间:2015-08-11 16:24:13

标签: c# typing

我一直在来回试图确定是否有办法确定startxref中的objects是否属于特定类型。

基本上我正在尝试开发一个函数

List<>

但是从我读过的所有内容和我尝试的所有内容中我都得出结论,这在C#中是不可能的。

编辑:我想在下面进行比较

public List<Object> ReadWriteArgs { get; set; }
public Booolean ConfirmRWArgs(int count, List<Type> types)
{
    if(ReadWriteArgs != null && ReadWriteArgs.Count == count)
    {
        // Compare List<Type> to the types of List<Object>
        return true;
    }
    return false;
}

3 个答案:

答案 0 :(得分:4)

public List<Object> ReadWriteArgs { get; set; }
public bool ConfirmRWArgs(int count, List<Type> types)
{
    return ReadWriteArgs != null
           && ReadWriteArgs.Count == count
           && ReadWriteArgs.Zip(types, (arg, type) => arg.GetType() == type).All(b => b);
}

它只是将参数列表和类型列表压缩在一起,检查每个参数是否属于合适的类型。

测试:

ReadWriteArgs = new List<object>() { "string", 0, 'c' };
ConfirmRWArgs(3, new List<Type>() { typeof(string), typeof(int), typeof(char) }); // true
ConfirmRWArgs(3, new List<Type>() { typeof(string), typeof(int), typeof(bool) }); // false

答案 1 :(得分:2)

public List<Object> ReadWriteArgs { get; set; }
public bool ConfirmRWArgs(List<Type> types)
{
    for (int i = 0; i < types.Count; i++)
    {
        if (ReadWriteArgs[i].GetType() != types[i])
            return false;
    }

    return true;
}

答案 2 :(得分:0)

这样的事情?

public List<Object> ReadWriteArgs { get; set; }
public Booolean ConfirmRWArgs(int count, List<Type> types)
{
    if(ReadWriteArgs != null && ReadWriteArgs.Count == count)
    {
        // Compare List<Type> to the types of List<Object>
    if (types.IsGenericType && types.GetGenericTypeDefinition() == typeof(List<>))
        return true;
    }
    return false;
}