在C#中跨程序集調用internal方法
阿新 • • 發佈:2019-03-19
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方法