1. 程式人生 > >在C#中跨程序集調用internal方法

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

optimize odi public eight 根據 padding live int 代碼

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

C#反射internal
  • internal是一個訪問修飾符,英文含義是“內部的”,這個內部指的是“同一程序集”的內部。同一程序集的其他類都可以訪問。
    如下一段代碼,MyILiveContent是其他程序集的一個類,_original是其內部成員,Add是其內部方法。
    static void reflectionCallFunc(GameObject original, 	MyILiveContent component)
    {
        Assembly asm = Assembly.Load("GameCore");	//程序集的名字,不要後綴
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(); MethodInfo oMethod = t1.GetMethod("Add", BindingFlags.Instance | BindingFlags.NonPublic, null, new Type[] { typeof(MyILiveContent) }, null); //根據方法名獲得方法,該方法有一個參數 oMethod.Invoke(oPubClass, new object[] { component }); //調用方法,如果是靜態方法則第一個參數為null,並且不需要創建實例
}

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