• c# 反射简单小例子


    /////接口

    using System;
    usingSystem.Text;

    namespaceJiang.IForm
    {
        /// <summary>
        ///
    反射要实现该接口
       
    /// </summary>
      
    public interfaceIForm
      
    {
            /// <summary>
            ///
    form test
          
    /// </summary>
          
    stringFormName
            { get; set; }
            /// <summary>
            ///
    Run appliction
          
    /// </summary>
          
    voidRun();
        }
    }

    以下是实现接口的类

    using System;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    
    using Jiang.IForm;
    
    namespace RefLibraryUser
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                Close();
            }
        }
    
        public class Progarm:IForm
        {
            private string formname;
             ///设置窗体名称
            public string FormName
            {
                get
                {
                    return formname;
                }
                set
                {
                    formname = value;
                }
            }
             ///运行程序
            public void Run()
            {
                Form1 f1 = new Form1();
                f1.Text = this.FormName;
                f1.Show();
            }
          
        }
    }
    
    
    ///要反射的dll文件
               string files = Application.StartupPath + (@"\Plug-In\abc.RefLibraryUser.dll");
               ///加载dll文件
               Assembly assembly = Assembly.LoadFile(files);
               ////获取程序中的类型
               Type[] t = assembly.GetTypes();
               foreach (Type ty in t)
               {
                   if (ty.GetInterface("IForm") != null)///检查是否实现IForm该接口
                   {
                       /////创建实例
                       IForm f = (IForm)Activator.CreateInstance(ty);
                       f.FormName = "插件窗体";///设置反射程序中的名称
                       f.Run();//运行此反射程序
                       break;////为了提高运行效率(因为一个程序里我只有一个实现了这个接口,所以我找到一个就够了)。
                   }
               }
    

    主程序,反射dll文件

    ///要反射的dll文件
              
    stringfiles = Application.StartupPath + (@"\Plug-In\abc.RefLibraryUser.dll");
               ///加载dll文件
              
    Assemblyassembly = Assembly.LoadFile(files);
               ////获取程序中的类型
              
    Type[] t = assembly.GetTypes();
               foreach(Typety int)
               {
                   if(ty.GetInterface("IForm") != null)///检查是否实现IForm该接口
                  
    {
                       /////创建实例
                      
    IFormf = (IForm)Activator.CreateInstance(ty);
                       f.FormName = "插件窗体";///设置反射程序中的名称
                      
    f.Run();//运行此反射程序
                      
    break;////为了提高运行效率(因为一个程序里我只有一个实现了这个接口,所以我找到一个就够了)。
                  
    }
               }

  • 相关阅读:
    《Windows驱动开发技术详解》之派遣函数
    错误:无法解析外部符号
    《Windows驱动开发技术详解》之Windows内核函数
    《Windows驱动开发技术详解》之Windows内存管理
    《Windows驱动开发技术详解》之驱动程序的基本结构
    《Windows驱动开发技术详解》之编程加载NT式驱动
    二叉搜索树
    Trie树
    判断给定二叉树是否是平衡二叉树
    数字在排序数组中出现的次数
  • 原文地址:https://www.cnblogs.com/server126/p/1987013.html
Copyright © 2020-2023  润新知