TypeDelegator.InvokeMember 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
지정된 멤버를 호출합니다. 호출할 메서드에 액세스할 수 있어야 하며 지정된 바인더 및 호출 특성의 제약 조건 하에서 지정된 인수 목록과 가장 구체적인 일치 항목을 제공해야 합니다.
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);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicProperties | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicProperties)]
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);
[System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)]
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);
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);
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.NonPublicProperties | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicConstructors | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicFields | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicMethods | System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.PublicProperties)>]
override this.InvokeMember : string * System.Reflection.BindingFlags * System.Reflection.Binder * obj * obj[] * System.Reflection.ParameterModifier[] * System.Globalization.CultureInfo * string[] -> obj
[<System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembers(System.Diagnostics.CodeAnalysis.DynamicallyAccessedMemberTypes.All)>]
override this.InvokeMember : string * System.Reflection.BindingFlags * System.Reflection.Binder * obj * obj[] * System.Reflection.ParameterModifier[] * System.Globalization.CultureInfo * string[] -> obj
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
호출할 멤버의 이름입니다. 생성자, 메서드, 속성 또는 필드일 수 있습니다. 빈 문자열("")이 전달되면 기본 멤버가 호출됩니다.
- invokeAttr
- BindingFlags
호출 특성입니다. 다음 중 BindingFlagsInvokeMethodCreateInstanceStaticGetFieldSetFieldGetPropertySetProperty하나여야 합니다. 적절한 호출 특성을 지정해야 합니다. 정적 멤버를 호출할 경우 플래그를 Static 설정해야 합니다.
- binder
- Binder
리플렉션을 통해 바인딩, 인수 형식 강제 변환, 멤버 호출 및 개체 검색 MemberInfo 을 사용하도록 설정하는 개체입니다. 이 binder경우 null 기본 바인더가 사용됩니다.
Binder을(를) 참조하세요.
- target
- Object
지정된 멤버를 호출할 개체입니다.
- args
- Object[]
호출할 멤버의 매개 변수 수, 순서 및 형식을 포함하는 형식 Object 의 배열입니다. 초기화args되지 않은 항목이 포함된 경우 Object 기본 바인더를 사용하여 0, 0.0 또는 문자열로 확장할 수 있는 비어 있는 것으로 처리됩니다.
- modifiers
- ParameterModifier[]
호출할 멤버의 인수와 연결된 특성을 나타내는 요소를 사용하여 길이ParameterModifier가 같은 형식 args 의 배열입니다. 매개 변수에는 멤버의 서명에 연결된 특성이 있습니다. ByRef의 경우 다음을 사용하고 ParameterModifier.ByRef없음의 경우 사용합니다 ParameterModifier.None. 기본 바인더는 이와 정확히 일치합니다. 바인딩에 사용되며 사용되지 않는 특성 InInOut 은 .를 사용하여 ParameterInfo볼 수 있습니다.
- culture
- CultureInfo
형식의 CultureInfo 강제 변환을 제어하는 데 사용되는 인스턴스입니다. 예를 들어 1000이 다른 문화권에 의해 다르게 표현되므로 1000 Double 을 나타내는 문자열을 값으로 변환하는 데 필요합니다. 이 culturenull 경우 CultureInfo 현재 스레드에 CultureInfo 대한 스레드가 사용됩니다.
- namedParameters
- String[]
배열과 함께 요소 0 args 부터 시작하여 일치하는 매개 변수 이름을 포함하는 문자열 배열입니다. 배열에 구멍이 없어야 합니다.
args의 경우.
Length이 namedParameters보다 큽니다.
Length- 나머지 매개 변수는 순서대로 채워집니다.
반품
Object 호출된 멤버의 반환 값을 나타내는 값입니다.
- 특성
설명
다음 조건이 모두 true이면 메서드가 호출됩니다.
메서드 선언의 매개 변수 수는 지정된 인수 목록의 인수 수와 같습니다(멤버에 기본 인수가 정의되지 않은 경우).
각 인수의 형식은 바인더에서 매개 변수 형식으로 변환할 수 있습니다.
바인더는 일치하는 모든 메서드를 찾습니다. 이러한 메서드는 요청된 바인딩 유형(BindingFlags.MethodInvokeBindingFlags.GetProperties등)에 따라 찾을 수 있습니다. 메서드 집합은 이름, 인수 수 및 바인더에 정의된 검색 한정자 집합으로 필터링됩니다.
메서드를 선택하면 메서드가 호출됩니다. 해당 시점에서 접근성을 확인합니다. 검색은 메서드와 연결된 접근성 특성에 따라 검색되는 메서드 집합을 제어할 수 있습니다. 메서드는 Binder.BindToMethod 호출할 메서드를 선택해야 합니다. 기본 바인더는 가장 구체적인 일치 항목을 선택합니다.
메모
완전히 신뢰할 수 있는 코드에 대한 액세스 제한은 무시됩니다. 즉, 코드를 완전히 신뢰할 때마다 리플렉션을 사용하여 프라이빗 생성자, 메서드, 필드 및 속성에 액세스하고 호출할 수 있습니다.
현재 InvokeMember 모든 유형의 개체에 대해 Microsoft .NET Framework 리플렉션 의미 체계를 수행합니다.
이름으로 지정된 멤버가 배열이고 플래그가 BindingFlags.GetField 설정된 invokeAttrargs 경우 배열은 값을 반환할 요소를 지정합니다. 예를 들어 개체를 통한 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"});