다음을 통해 공유


TypeDelegator.InvokeMember 메서드

정의

지정된 멤버를 호출합니다. 호출해야 할 메서드에 액세스할 수 있어야 하며 이 메서드가 지정된 바인더 및 호출 특성의 제약 조건 하에서 지정된 인수 목록과 가장 구체적으로 일치하는 항목을 제공해야 합니다.

public:
 override System::Object ^ InvokeMember(System::String ^ name, System::Reflection::BindingFlags invokeAttr, System::Reflection::Binder ^ binder, System::Object ^ target, cli::array <System::Object ^> ^ args, cli::array <System::Reflection::ParameterModifier> ^ modifiers, System::Globalization::CultureInfo ^ culture, cli::array <System::String ^> ^ namedParameters);
public override object? InvokeMember (string name, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder? binder, object? target, object?[]? args, System.Reflection.ParameterModifier[]? modifiers, System.Globalization.CultureInfo? culture, string[]? namedParameters);
public override object InvokeMember (string name, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, object target, object[] args, System.Reflection.ParameterModifier[] modifiers, System.Globalization.CultureInfo culture, string[] namedParameters);
override this.InvokeMember : string * System.Reflection.BindingFlags * System.Reflection.Binder * obj * obj[] * System.Reflection.ParameterModifier[] * System.Globalization.CultureInfo * string[] -> obj
Public Overrides 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

매개 변수

name
String

호출할 멤버의 이름입니다. String은 생성자, 메서드, 속성 또는 필드일 수 있습니다. 빈 문자열("")이 전달되면 기본 멤버가 호출됩니다.

invokeAttr
BindingFlags

호출 특성입니다. 호출 특성은 BindingFlags: InvokeMethod, CreateInstance, Static, GetField, SetField, GetProperty, SetProperty 중 하나이어야 합니다. 적합한 호출 특성을 지정해야 합니다. 정적 멤버를 호출하려면 Static 플래그를 설정해야 합니다.

binder
Binder

리플렉션을 사용하여 바인딩, 인수 형식의 강제 변환, 멤버 호출 및 MemberInfo 개체 검색을 사용할 수 있도록 하는 개체입니다. bindernull이면 기본 바인더가 사용됩니다. Binder을 참조하세요.

target
Object

지정한 멤버를 호출할 개체입니다.

args
Object[]

호출할 멤버의 매개 변수의 개수, 순서, 형식이 포함된 형식 Object의 배열입니다. args에 초기화되지 않은 Object가 포함되면 이 개체는 기본 바인더를 사용하여 0, 0.0 또는 문자열로 확장될 수 있는 빈 배열로 처리됩니다.

modifiers
ParameterModifier[]

호출할 멤버의 인수에 연관된 특성을 나타내는 요소가 있는 args와 길이가 같은 형식 ParameterModifier의 배열입니다. 매개 변수는 자신과 관련된 특성을 해당 멤버의 시그니처에 저장합니다. ByRef일 경우 ParameterModifier.ByRef를 사용하고 없는 경우 ParameterModifier.None를 사용합니다. 기본 바인더는 다음과 정확하게 일치합니다. InInOut과 같은 특성은 바인딩에 사용되지 않지만 ParameterInfo을 사용하여 표시할 수 있습니다.

culture
CultureInfo

형식의 강제 변환을 제어하는 데 사용되는 CultureInfo 의 인스턴스입니다. 예를 들어, 1000은 각 문화권마다 다르게 표현되므로 1000을 나타내는 문자열을 Double 값으로 변환하기 위해 이 매개 변수가 필요합니다. culturenull인 경우 현재 스레드의 CultureInfo에 대한 CultureInfo가 사용됩니다.

namedParameters
String[]

args 배열과 요소 0에서부터 일치하는 매개 변수 이름이 포함된 문자열 배열입니다. 배열 내에 빈 부분이 있으면 안됩니다. args. LengthnamedParameters보다 큰 경우 Length보다 크면 나머지 매개 변수는 순서대로 채워집니다.

반환

호출된 멤버의 반환 값을 나타내는 Object를 반환합니다.

설명

다음 조건이 모두 true이면 메서드가 호출됩니다.

  • 메서드 선언의 매개 변수 수는 지정된 인수 목록의 인수 수와 같습니다(멤버에 기본 인수가 정의되지 않은 경우).

  • 각 인수의 형식은 바인더에서 매개 변수 형식으로 변환할 수 있습니다.

바인더는 일치하는 모든 메서드를 찾습니다. 이러한 메서드는 요청된 바인딩 유형(BindingFlags.MethodInvoke, BindingFlags.GetProperties등)에 따라 찾을 수 있습니다. 메서드 집합은 이름, 인수 수 및 바인더에 정의된 검색 한정자 집합으로 필터링됩니다.

메서드를 선택한 후에는 메서드가 호출됩니다. 해당 시점에서 접근성을 확인합니다. 검색은 메서드와 연결된 접근성 특성에 따라 검색되는 메서드 집합을 제어할 수 있습니다. 메서드는 Binder.BindToMethod 호출할 메서드를 선택해야 합니다. 기본 바인더는 가장 구체적인 일치 항목을 선택합니다.

참고

완전히 신뢰할 수 있는 코드에 대한 액세스 제한은 무시됩니다. 즉, 코드를 완전히 신뢰할 때마다 리플렉션을 사용하여 프라이빗 생성자, 메서드, 필드 및 속성에 액세스하고 호출할 수 있습니다.

현재 는 InvokeMember 모든 유형의 개체에 대해 Microsoft .NET Framework 리플렉션 의미 체계를 수행합니다.

이름으로 지정된 멤버가 배열이고 플래그가 BindingFlags.GetFieldinvokeAttrargs 설정된 경우 배열은 값을 반환할 요소를 지정합니다. 예를 들어 개체를 통한 Type 다음 호출은 호출 개체 t 의 멤버인 문자열 배열 MyArray의 첫 번째 요소 값을 반환합니다.

String ret = (String) t.InvokeMember ("MyArray", BindingFlags.GetField, null, this, new Variant[]{0});

를 사용하여 InvokeMember 멤버 배열의 요소를 하나 이상 설정할 수 있습니다. 모든 요소는 동일한 값으로 설정됩니다. 배열의 형식은 args 다음과 같이 지정해야 합니다.

{index1,  
    index2,, value}  

예를 들어 이전 예제에서 MyArray의 첫 번째 멤버를 설정하려면 구문은 다음과 같습니다.

t.InvokeMember ("MyArray", BindingFlags.SetField, null, this, new  
    Variant[]{0,"Updated"});  

적용 대상

추가 정보