You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
我用反射试了一下,没有上面的问题
public class C : MonoBehaviour
{
void Start()
{
TextAsset dll = Resources.Load("CryptoD") as TextAsset;
Assembly ass = Assembly.Load(dll.bytes);
Type type = ass.GetType("A");
Object obj = Activator.CreateInstance(type);
MethodInfo mi = type.GetMethod("Test");
mi.Invoke(obj, null);
}
}
The text was updated successfully, but these errors were encountered:
测试Dll的源码
public class A
{
public void Test()
{
byte[] result = new byte[5]{1,1,1,1,1};
for (int i = 0; i < result.Length; i++)
{
Debug.Log("Before = " + result[i]);
result[i] = 2;
Debug.Log("After = " + result[i]);
}
}
}
在Unity中
public class B : MonoBehaviour
{
void Start()
{
//创建CLRSharp环境
//加载L#模块
//执行构造函数
…………
//调用A类的Test方法
IMethod method0 = wantType.GetMethod("Test",MethodParamList.constEmpty());
method0.Invoke(context, typeObj, null);
}
}
结果A类中Test方法里的result数组中的值没有改变,全部都为1。
用new初始化可以赋值成功,= 赋值失败
我用反射试了一下,没有上面的问题
public class C : MonoBehaviour
{
void Start()
{
TextAsset dll = Resources.Load("CryptoD") as TextAsset;
Assembly ass = Assembly.Load(dll.bytes);
Type type = ass.GetType("A");
Object obj = Activator.CreateInstance(type);
MethodInfo mi = type.GetMethod("Test");
mi.Invoke(obj, null);
}
}
The text was updated successfully, but these errors were encountered: