다음을 통해 공유


IReflect.InvokeMember 메서드

지정된 멤버를 호출합니다.

네임스페이스: System.Reflection
어셈블리: mscorlib(mscorlib.dll)

구문

‘선언
Function InvokeMember ( _
    name As String, _
    invokeAttr As BindingFlags, _
    binder As Binder, _
    target As Object, _
    args As Object(), _
    modifiers As ParameterModifier(), _
    culture As CultureInfo, _
    namedParameters As String() _
) As Object
‘사용 방법
Dim instance As IReflect
Dim name As String
Dim invokeAttr As BindingFlags
Dim binder As Binder
Dim target As Object
Dim args As Object()
Dim modifiers As ParameterModifier()
Dim culture As CultureInfo
Dim namedParameters As String()
Dim returnValue As Object

returnValue = instance.InvokeMember(name, invokeAttr, binder, target, args, modifiers, culture, namedParameters)
Object InvokeMember (
    string name,
    BindingFlags invokeAttr,
    Binder binder,
    Object target,
    Object[] args,
    ParameterModifier[] modifiers,
    CultureInfo culture,
    string[] namedParameters
)
Object^ InvokeMember (
    String^ name, 
    BindingFlags invokeAttr, 
    Binder^ binder, 
    Object^ target, 
    array<Object^>^ args, 
    array<ParameterModifier>^ modifiers, 
    CultureInfo^ culture, 
    array<String^>^ namedParameters
)
Object InvokeMember (
    String name, 
    BindingFlags invokeAttr, 
    Binder binder, 
    Object target, 
    Object[] args, 
    ParameterModifier[] modifiers, 
    CultureInfo culture, 
    String[] namedParameters
)
function InvokeMember (
    name : String, 
    invokeAttr : BindingFlags, 
    binder : Binder, 
    target : Object, 
    args : Object[], 
    modifiers : ParameterModifier[], 
    culture : CultureInfo, 
    namedParameters : String[]
) : Object

매개 변수

  • name
    찾을 멤버의 이름입니다.
  • invokeAttr
    BindingFlags 호출 특성 중 하나입니다. invokeAttr 매개 변수는 생성자, 메서드, 속성 또는 필드일 수 있습니다. 적합한 호출 특성이 지정되어야 합니다. 빈 문자열("")을 멤버의 이름으로 전달하여 클래스의 기본 멤버를 호출합니다.
  • binder
    BindingFlags 비트 플래그 중 하나입니다. 이 메서드와 관련된 속성이 포함된 Binder를 구현합니다.
  • target
    지정한 멤버를 호출할 개체입니다. 이 매개 변수는 정적 멤버에 대해서는 무시됩니다.
  • args
    호출되는 멤버에 대한 매개 변수의 개수, 순서 및 형식이 포함된 개체의 배열입니다. 매개 변수가 없는 경우 이 배열은 빈 배열입니다.
  • modifiers
    ParameterModifier 개체로 이루어진 배열입니다. 이 배열의 길이는 메타데이터에 있는 호출된 멤버의 인수 특성을 나타내는 args 매개 변수의 길이와 같습니다. 매개 변수에는 pdIn, pdOut, pdRetval, pdOptional, pdHasDefault와 같은 특성을 사용할 수 있습니다. 이러한 특성은 각각 [In], [Out], [retval], [optional] 및 기본 매개 변수를 나타내며 다양한 상호 운용성 서비스에서 사용됩니다.
  • culture
    형식의 강제 변환을 제어하는 데 사용되는 CultureInfo의 인스턴스입니다. 예를 들어, 1000은 culture마다 다르게 표현되므로 culture는 1000을 나타내는 StringDouble 값으로 변환합니다. 이 매개 변수가 Null 참조(Visual Basic의 경우 Nothing)이면 현재 스레드에 대한 CultureInfo가 사용됩니다.
  • namedParameters
    매개 변수의 String 배열입니다.

반환 값

지정된 멤버입니다.

예외

예외 형식 조건

ArgumentException

invokeAttr가 BindingFlags.CreateInstance이고 다른 비트 플래그도 설정되는 경우

ArgumentException

invokeAttr가 BindingFlags.CreateInstance가 아니고 name이 Null 참조(Visual Basic의 경우 Nothing)인 경우

ArgumentException

invokeAttr가 BindingFlags의 호출 특성이 아닌 경우

ArgumentException

invokeAttr가 속성이나 필드에 대해 getset을 모두 지정하는 경우

ArgumentException

invokeAttr가 set 필드와 Invoke 메서드를 모두 지정하는 경우. get 필드에는 args가 제공됩니다.

ArgumentException

set 필드에 대해 두 개 이상의 인수가 지정되는 경우

MissingFieldException

필드 또는 속성을 찾을 수 없는 경우

MissingMethodException

메서드를 찾을 수 없는 경우

SecurityException

필요한 ReflectionPermission 없이 전용 멤버가 호출되는 경우

설명

호출할 메서드는 액세스할 수 있어야 하며 지정된 바인더 및 호출 특성 제약 조건이 설정된 상태에서 지정된 인수 목록과 가장 근접하게 일치해야 합니다.

메서드 선언의 매개 변수 개수와 지정된 인수 목록의 인수 개수가 동일하면 메서드가 호출되며 각 인수 형식은 바인더에 의해 매개 변수 형식으로 변환될 수 있습니다.

참고

InvokeMember에 전달된 매개 변수 한정자의 배열에는 하나의 매개 변수 한정자가 포함되어야 합니다. COM에 제공될 때 참조에 의해 전달되어야 하는 인수를 결정할 경우에는 첫 번째 매개 변수 한정자만 고려됩니다.

바인더는 요청된 바인딩 형식(BindingFlags.InvokeMethod, GetProperties 등)에 따라 일치하는 메서드를 모두 찾습니다. 이름, 인수 개수 및 바인더에 정의된 검색 한정자 집합을 기준으로 메서드 집합이 필터링됩니다. 메서드가 선택된 후에 호출될 때 이 메서드에 액세스할 수 있는지 여부가 확인됩니다. 검색 기능을 사용하면 이 메서드와 관련된 액세스 가능 특성을 기준으로 검색되는 메서드 집합을 제어할 수 있습니다. BindToMethod는 호출되는 메서드를 선택합니다. 기본 바인더는 가장 근접한 일치를 선택합니다.

완전하게 신뢰할 수 있는 코드에 대해서는 액세스 제한이 무시됩니다. 즉, 코드를 완전히 신뢰할 수 있는 경우에는 리플렉션을 통해 전용 생성자, 메서드, 필드 및 속성에 액세스하고 호출할 수 있습니다.

예제

다음 예제에서는 Now 속성의 값을 구합니다.

Imports System
Imports System.Reflection
Imports Microsoft.VisualBasic

Public Class MainClass
    Public Overloads Shared Sub Main(ByVal args() As String)
        Dim tDate As Type = GetType(System.DateTime)
        Dim result As [Object] = tDate.InvokeMember("Now", _
            BindingFlags.GetProperty, Nothing, Nothing, New [Object](-1) {})
        Console.WriteLine(result.ToString())
    End Sub 'Main
End Class 'MainClass
using System;
using System.Reflection;

public class MainClass 
{ 
    public static void Main(string[] args)
    {
        Type tDate = typeof(System.DateTime);
        Object result = tDate.InvokeMember("Now", 
            BindingFlags.GetProperty, null, null, new Object[0]);
        Console.WriteLine(result.ToString());
    }
}
#using <System.DLL>

using namespace System;
using namespace System::Reflection;

#define NULL 0
void main()
{
   Type^ tDate = Type::GetType( L"System.DateTime" );
   Object^ result = tDate->InvokeMember( L"Now", BindingFlags::GetProperty, nullptr, NULL, gcnew array<Object^>(0) );
   Console::WriteLine( result->ToString() );
}
import System.*;
import System.Reflection.*;

public class MainClass
{   
    public static void main(String[] args)
    {
        Type tDate = Type.GetType("System.DateTime");
        Object result = tDate.InvokeMember("Now", 
            BindingFlags.GetProperty, null, null, new Object[0]);
        Console.WriteLine(result.ToString());
    } //main
} //MainClass

플랫폼

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

2.0, 1.1, 1.0에서 지원

참고 항목

참조

IReflect 인터페이스
IReflect 멤버
System.Reflection 네임스페이스
Object
Binder 클래스
BindingFlags 열거형