c#和lua的反射

来源:互联网 发布:windows网络编程第二版 编辑:程序博客网 时间:2024/05/29 07:22
假设现在有一个C#类MyClass,继承自Singleton,如下


public class MyClass:Singleton<MyClass>{public MyClass(){m_name = "sylva";}public LogMyName(){Debug.Log("my name:" + m_name);}private string m_name;}public class Singleton<T> where T: class,new(){public static T s_instance;public static T instance{get{if(null == s_instance)s_instance = new T();return s_instance;}}}





想用反射的方式调用MyClass.instance.LogMyName();
c#方法如下:
var tpy = System.Type.GetType("MyClass");var insProp = tpy.BaseType.GetProperty("instance");var ins = insProp.GetValue(null,null);var func = tpy.GetMethod("LogMyName");func.Invoke(ins,null);



lua方法如下:
local rf = tolualocal tpy = rf.findtype("MyClass")if not tpy thenrf.loadassembly("Assembly_CSharp")tpy = rf.findtype("MyClass")endlocal insProp = rf.getproperty(tpy.BaseType,"instance")local ins = insProp:Get(nil,{})local func = rf.getmethod(tpy,"LogMyName")func:Call(ins)




原创粉丝点击