标签:font 动态 load har 引用 pre property lan 函数
【学习资料】
《C#图解教程》(第24章):https://www.cnblogs.com/moonache/p/7687551.html
电子书下载:https://pan.baidu.com/s/1mhOmBG0
【内容】
对以下文章的整合:
知识点:
【文章整合笔记】
Type t = typeof(string);
string s = "hello"; Type t = s.GetType();
Type t = Type.GetType("System.String");
System.Type t = typeof(string);
// 获取参数为char[]的构造函数: string(char[]) System.Reflection.ConstructorInfo ci = t.GetConstructor(new Type[] { typeof(char[]) });
// 等价于 object obj = new string( new char[] { ‘h‘, ‘e‘, ‘l‘, ‘l‘, ‘o‘ } ) object obj = ci.Invoke(new object[] { new char[] { ‘h‘, ‘e‘, ‘l‘, ‘l‘, ‘o‘ } });
System.Type t = typeof(string);
// 等价于 object obj = new string( new char[] { ‘h‘, ‘e‘, ‘l‘, ‘l‘, ‘o‘ } ) object obj2 = Activator.CreateInstance(t, new char[] { ‘h‘, ‘e‘, ‘l‘, ‘l‘, ‘o‘ });
public class MyTest { // 字段 public int value1 = 1; private int value2 = 2; // 属性 public string name1 { get; set; } = "hello"; protected string name2 { get; set; } = "world"; // 方法 public void Show1() { Debug.Log(name1 + value1); } internal void Show2() { Debug.Log(name2 + value2); } } void Start() { // 获取 MyTest类 的 Type类型 Type t = typeof(MyTest); // 使用Activator创建对象 object obj = Activator.CreateInstance(t); // 获取字段 FieldInfo obj_value1 = t.GetField("value1"); FieldInfo obj_value2 = t.GetField("value2"); // null,无法获取 private 字段 // 获取属性 PropertyInfo obj_name1 = t.GetProperty("name1"); PropertyInfo obj_name2 = t.GetProperty("name2"); // null,无法获取 protected 字段 // 获取方法 MethodInfo obj_Show1 = t.GetMethod("Show1"); MethodInfo obj_Show2 = t.GetMethod("Show2"); // null,无法获取 internal 字段 // 设置字段 SetValue obj_value1.SetValue(obj, 10); // 设置属性 SetValue obj_name1.SetValue(obj, "heihei"); // 调用方法 Invoke obj_Show1.Invoke(obj, null); }
namespace MyNameSpace { public class LearnCS : MonoBehaviour { public class MyTest { public class MySubTest { } } void Start() { // 加载程序集,获取Assembly实例 Assembly ass1 = Assembly.Load("Assembly-CSharp"); Assembly ass2 = Assembly.LoadFrom("C:/E/Projects/Demo/Library/ScriptAssemblies/Assembly-CSharp.dll"); Assembly ass3 = Assembly.LoadFile("C:/E/Projects/Demo/Library/ScriptAssemblies/Assembly-CSharp.dll"); // 获取MyTest类型所在的程序集Assembly Assembly ass = Assembly.GetAssembly(typeof(MyTest)); // 获取当前运行的程序集Assembly Assembly assembly = Assembly.GetExecutingAssembly(); // 获取程序集名称信息 string assembly_FullName = assembly.FullName; AssemblyName assembly_Name = assembly.GetName(); // 获取程序集路径 string assembly_CodeBase = assembly.CodeBase; string assembly_Location = assembly.Location; // 获取Type Type[] types = assembly.GetTypes(); Type t = assembly.GetType("MyNameSpace.LearnCS+MyTest"); // 通过Type的FullName // 创建实例 var obj = assembly.CreateInstance("MyNameSpace.LearnCS+MyTest"); // 通过Type的FullName } } }
【扩展知识】
【Unity|C#】基础篇(12)——反射(Reflection)(核心类:Type、Assembly)
标签:font 动态 load har 引用 pre property lan 函数
原文地址:https://www.cnblogs.com/shahdza/p/12261831.html