在C#中跨程序集調用internal方法


在C#中跨程序集調用internal方法

  • internal是一個訪問修飾符,英文含義是“內部的”,這個內部指的是“同一程序集”的內部。同一程序集的其他類都可以訪問。
    如下一段代碼,MyILiveContent是其他程序集的一個類,_original是其內部成員,Add是其內部方法。
 static void reflectionCallFunc(GameObject original, MyILiveContent component)
 {
 Assembly asm = Assembly.Load("GameCore"); //程序集的名字,不要后綴
    
    Type t1 = asm.GetType("Yurowm.GameCore.MyILiveContent");  //參數必須是類的全名 object oPubClass = Activator.CreateInstance(t1);  //創建類型的實例 //修改內部成員“_original”的值 foreach (PropertyInfo rInfo in t1.GetProperties()) { if (rInfo.Name == "_original") { if (rInfo.CanWrite) { rInfo.SetValue(oPubClass, original, null); } break; } } component.Initialize();
    //根據方法名獲得方法,該方法有一個參數:internal void Add(MyILiveContent clone) MethodInfo oMethod = t1.GetMethod("Add", BindingFlags.Instance | BindingFlags.NonPublic, null, new Type[] { typeof(MyILiveContent) }, null);
    //方法需要傳入的參數
    object[] parameters = new object[] { component };

    //調用方法,如果是靜態方法則第一個參數為null,並且不需要創建實例 oMethod.Invoke(oPubClass, parameters); }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM