리플렉션을 사용하여 어떻게 varargs 메서드를 호출 할 수 있습니까?varargs 메서드 호출
public static void ArgsMethod(__arglist)
{
ArgIterator ai = new ArgIterator(__arglist);
while(ai.GetRemainingCount() > 0)
{
Console.WriteLine(TypedReference.ToObject(ai.GetNextArg()));
}
}
typeof(Program).GetMethod("ArgsMethod").Invoke(null,new object[0])
는 NotSupportedException이가 발생합니다 : 하나이처럼.
'TypedReference'가 필요하다고 생각됩니다. – SLaks
메서드 이름과 메서드 매개 변수 형식의 배열을 전달하는 GetMethod를 호출합니다. varargs 메소드의 경우, 유형은 Object의 배열입니다. –
@Max 1)'GetMethod (string, Type [])'은 고정 된 매개 변수 유형 만 검사하며 vararg 유형을 기반으로 메소드를 생성하지 않습니다. 2) 메소드에 객체를 전달하지 않기 때문에 오히려 빈 Type 배열이됩니다. – IllidanS4