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;////为了提高运行效率(因为一个程序里我只有一个实现了这个接口,所以我找到一个就够了)。
              
}
           }

原文地址:https://www.cnblogs.com/server126/p/1987013.html