如何从对象数组中获取类型数组?

时间:2011-01-17 22:22:06

标签: c# reflection

我有一个对象[],我用它来通过反射动态调用方法。由于AmbiguousMatchException我需要知道类型,并且很难提前知道它们。所以我想采用“params object [] args”并得到所有这些的Type []。

3 个答案:

答案 0 :(得分:3)

如果您有linq可用,您可以轻松获得与对象匹配的一系列类型,但我不确定它是否有助于您的最终目标。

var types = args.Select(arg => arg.GetType()).ToArray();

您是否打算检查对象数组中的类型,然后检查方法签名并尝试相应地匹配它们?

答案 1 :(得分:1)

请试试这个:

        IList<Type> typeList = new List<Type>();

        foreach(object item in args)
        {
            typeList.Add(item.GetType());
        }

        typeList.ToArray();

答案 2 :(得分:0)

Array.ConvertAll功能提供一个镜头:

Type[] objTypes = Array.ConvertAll<object, Type>(
    objArray,
    delegate(object obj){
        if(obj==null) return null;
        return obj.GetType();
    });