나는 Excel.PivotField가 있다고 가정하고 객체에 HiddenItemsList을 설정해야합니다. 문제는이 보안 설정으로 작동하지만 당신이 Option Strict On
및 Option Explicit On
을 설정할 때NewLateBinding.LateSet 리플렉션 호출
Dim field as Excel.PivotField = MyFunctionCall()
field.HiddenItemsList = GetHiddenItems()
, 그것은 분명 작동하지 않습니다 VB.NET으로
및 Option Strict Off
& Option Explicit Off
이 될 것입니다.
IDE에서 PivotField의 HiddenItemsList 속성을 확인할 수 없습니다 (첫 번째 문제).
그러나 후기 바인딩을 사용하면 완벽하게 작동합니다.
이제 다음 단계는 Option Strict와 Explicit를 활성화하는 것입니다 (앞으로 C#으로 변환 할 예정입니다).
NewLateBinding.LateSet(field , Nothing, "HiddenItemsList", New Object() { GetHiddenItems() }, Nothing, Nothing)
쉬운 권리 :
그래서 나는 코드를 컴파일하는 방법을 보면?
그러나이 코드는 Microsoft.VisualBasic 네임 스페이스에 의존합니다. 그리고 당연히, 우리는 그것을 원하지 않습니다.
그래서 나는 일반 반사 호출로 변환 시도 :GetType(Excel.PivotField).GetProperty("HiddenItemsList").SetValue(field , GetHiddenItems() , Reflection.BindingFlags.SetProperty, Nothing, Nothing, Nothing)
는 불행히도 첫 번째 부분 (GetType(Excel.PivotField).GetProperty("HiddenItemsList")
)가 이미 Nothing
를 반환, 그래서 거기에 붙어있어.
도와 주시겠습니까? ;-)