• 反射


    反射:  这是.Net中获取运行时类型信息的方式,  应用程序由程序集(assembly),模块(module), (class)组成.而反射提供一种编程的方式,让程序员可以在程序运行期获得这几个组成部分的相关信息

    比如:

     Assembly类可以获得正在运行的装配件信息,也可以动态的加载装配件,以及在装配件中查找类型信息,并创建该类型的实例。
    Type类可以获得对象的类型信息,此信息包含对象的所有要素:方法、构造器、属性等等,通过Type类可以得到这些要素的信息,并且调用之。
    MethodInfo包含方法的信息,通过这个类可以得到方法的名称、参数、返回值等,并且可以调用之。
    诸如此类,还有FieldInfo、EventInfo等等,这些类都包含在System.Reflection命名空间下。

    引用命名空间:using System.Reflection;

    反射的核心类:Type

    例如:MyClass类

     class MyClass

        {

            public int zoo=1;

            public string Name { get; set; }

            public void Test(int a)

            {

                Console.WriteLine(a);

            }

            public void Test1<T>(T i)

            {

                Console.WriteLine(i);

            }

        }

    获得属性信息:PropertyInfo

     //属性

                Type t = typeof(MyClass);  //实例化类型

                object obj = Activator.CreateInstance(t); //生成对象

                var tt = t.GetProperties();  //获取所有属性信息

                foreach (var item in tt)

                {

                    item.SetValue(obj, "张三");//属性赋值

                    Console.WriteLine(item.Name);  //查看属性的名称

                    Console.WriteLine(item.PropertyType.Name);  //查看属性的数据类型

                    Console.WriteLine(item.GetValue(obj));//获取属性的值

                }

    获得方法信息:MethodInfo

     //方法

                MethodInfo m = t.GetMethod("Test");  //获得Test方法

                object[] Parmets = new object[] { 10 };  //需要传的参数

                m.Invoke(obj, Parmets);

    //泛型方法

     Assembly assembly1 = Assembly.Load("ConsoleApp1");  //加载ConsoleApp1命名空间

                Type t1 = assembly1.GetType("ConsoleApp1.MyClass")//ConsoleApp1下的mycalss类;

                object obj = Activator.CreateInstance(t1);  //实例对象

                MethodInfo m = t1.GetMethod("Test1"); //获得Test1的放法

                var o = new object[] { 4 }; //参数

                var m2 =m.MakeGenericMethod(new Type[] { typeof(int) }).Invoke(obj,o); //调用

  • 相关阅读:
    练习:选择样条曲线中open的点
    练习:展平splineshape
    MAXScript调用DOTNET的OpenFileDialog
    练习:for循环
    MAXScript笔记_Function函数
    关于 MAXScript 拷贝文件夹及内容到其他位置
    关于逐行逐行读取文本内容并写入数组
    关于如何获取/清除 MAXScript 侦听器内的文本
    关于清除丢失贴图与IES文件
    关于 MAXScript 中文路径返回上级目录(精简版)
  • 原文地址:https://www.cnblogs.com/gbb44/p/10636290.html
Copyright © 2020-2023  润新知