您的位置:首页 > 编程语言 > C#

c# 反射---简单小例子

2014-11-06 19:03 351 查看


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

               }

           }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: