2015-01-08 2 views
-2
public class Sample 
    { 

     public void Example(string typeName) 
     { 
      Type myType = typeName.GetType(); 
      MethodInfo method = typeof(Sample).GetMethod("GenericMethod"); 
      MethodInfo generic = method.MakeGenericMethod(myType); 
      var x = (object)"Hello"; 
      generic.Invoke(this, new object[1] { x }); 
     } 

     private void GenericMethod<T>(string obj) 
     { 

     } 
    } 

GenericMethod 제네릭 메소드를 포함하는 클래스가 있습니다. Invoke를 사용하여 호출합니다. 내가 샘플의 유형을 사용하여 그것을 호출하고 싶습니다. 하지만 GenericMethod를 비공개로 설정하려고합니다. 내가 개인, 내부 또는 보호 할 때 오류가 발생합니다.private 제네릭 메소드 호출 방법

+1

과 당신의 정보 'string' 타입입니다. – Dirk

+0

Chris BindingFlags.NonPublic이 작동하지 않습니다. –

답변

-3

개인 메서드는 Sample 클래스에서만 액세스 할 수 있습니다.

이 읽기 ​​:

What is the difference between Public, Private, Protected, and Nothing?

또는이`typeName.GetType()`가 항상를 반환합니다 당신이하고 싶은 일을하지 않습니다 http://msdn.microsoft.com/en-us/library/ms173121.aspx

+2

C# 언어의 컨텍스트에서만 해당됩니다. 반사는 모든 것을 가능하게하며, 그것이 OP가 말하는 것입니다. –

+0

네, 맞습니다. 나는 이것을 잊었다. –