Как получить массив типов из массива объектов? - PullRequest
1 голос
/ 18 января 2011

У меня есть объект [], который я использую для динамического вызова метода с помощью отражения. Из-за AmbiguousMatchException мне нужно знать типы, и было бы сложно узнать их заранее. Поэтому я хочу взять "params object [] args" и получить Type [] всех этих.

Ответы [ 3 ]

3 голосов
/ 18 января 2011

Если у вас есть доступный linq, вы можете легко получить массив типов, соответствующих объектам, но я не совсем уверен, что это поможет в вашей конечной цели.

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

Вы намерены проверить массив объектов на наличие типов, а затем проверить сигнатуру метода и попытаться сопоставить их соответствующим образом?

1 голос
/ 18 января 2011

Пожалуйста, попробуйте это:

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

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

        typeList.ToArray();
0 голосов
/ 18 января 2011

Дайте функции Array.ConvertAll выстрел:

Type[] objTypes = Array.ConvertAll<object, Type>(
    objArray,
    delegate(object obj){
        if(obj==null) return null;
        return obj.GetType();
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...