首页 > 其他 > 详细

反射的一点理解

时间:2020-06-12 17:53:35      阅读:38      评论:0      收藏:0      [点我收藏+]

 我理解的反射,大概就是各种“找找找”。以下“类名”,均为Type类型(由“名称空间.类名”构成)。

  1. 根据类对象,找到类名。
  2. 根据一个字符串,找到类名;
  3. 有了类名,找到它包含的属性、方法。
  4. 有了类名,还可以创建它的实例。

会了这几点,应该就算是会了反射。怎么用,就看你自己的理解了。

对于1、3,的应用,例子可以参考另一篇文章

对于2、4的应用,例子如下:

using System;
using System.Reflection;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            string s;
            //当前程序集
            //mynamespace = Assembly.GetEntryAssembly().GetName().Name;
            Console.WriteLine("输入名称空间名称");
            s = Console.ReadLine();
            s += ".";
            Console.WriteLine("输入类名称");
            s += Console.ReadLine();
            //得到类名,取程序集,创建对象
            var o = (MyClass.MyObject)Type.GetType(s).Assembly.CreateInstance(s);
            o.show();
        }
    }
}
namespace MyClass
{
    public interface MyObject
    {
        public void show();
    }
    public class Test:MyObject
    {
        int x;
        public Test()
        {
            x = 66;
        }
        public void show()
        {
            Console.WriteLine($"Assembly is {Assembly.GetEntryAssembly().GetName().Name},x={x}");
        }
    }
}

运行结果:

技术分享图片

 

反射的一点理解

原文:https://www.cnblogs.com/wanjinliu/p/13100897.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!