一、反射的概念
通过type类来侦测某一个类中的字段、构造、属性、方法等
public class Test : MonoBehaviour
{
private void Start()
{
TestType();
}
public static void TestType()
{
//typeof
Type type = typeof(String);
//侦测类的构造
foreach (var item in type.GetConstructors())
{
Debug.Log(item);
}
//侦测属性
foreach (var item in type.GetProperties())
{
Debug.Log(item);
}
//侦测方法
foreach (var item in type.GetMethods())
{
Debug.Log(item);
}
}
}
二、反射核心Type
1、obj.GetType():获取原型类型对应的Type对象
public class Test : MonoBehaviour
{
private void Start()
{
TestType("123");
}
public static void TestType(System.Object obj)
{
//obj.GetType():获取原型类型对应的Type对象
Type type = obj.GetType();
//侦测类的构造
foreach (var item in type.GetConstructors())
{
Debug.Log(item);
}
//侦测属性
foreach (var item in type.GetProperties())
{
Debug.Log(item);
}
//侦测方法
foreach (var item in type.GetMethods())
{
Debug.Log(item);
}
}
}
2、(i)通过类名称获取Type
(ii)传过一个类全称
public class Test : MonoBehaviour
{
private void Start()
{
TestType("System.Object");
}
//传过一个类全称
public static void TestType(string className)
{
//通过类名称获取Type
Type type = Type.GetType(className);
//侦测类的构造
foreach (var item in type.GetConstructors())
{
Debug.Log(item);
}
//侦测属性
foreach (var item in type.GetProperties())
{
Debug.Log(item);
}
//侦测方法
foreach (var item in type.GetMethods())
{
Debug.Log(item);
}
}
}