Есть ли способ отличить myFunc(1, 2, 3) от myFunc(new int[] { 1, 2, 3 })?

Вопрос ко всем мастерам C#. У меня есть метод, назовите его myFunc, и он принимает списки аргументов переменной длины/типа. Сигнатура аргумента самой myFunc — myFunc(params object[] args), и я использую отражение в списках (подумайте об этом, например, как о printf).

Я хочу обрабатывать myFunc(1, 2, 3)иначе, чем myFunc(new int[] { 1, 2, 3 }). То есть в теле myFunc я хотел бы перечислить типы моих аргументов и хотел бы получить {int, int, int}, а не int[]. Прямо сейчас я получаю последнее: по сути, я не могу различить два случая, и они оба приходят как int[].

Я хотел, чтобы первое отображалось как obs[].Length=3, с obs[0]=1 и т. д.

И я ожидал, что последнее будет отображаться как obs[].Length=1. , with obs[0]={ int[3] }

Можно ли это сделать, или я прошу невозможного?

9
задан svick 17 March 2012 в 13:31
поделиться