相关疑难解决方法(0)

编写C#插件系统

我正在尝试编写一个插件系统来为我的应用程序提供一些可扩展性,这样有人可以为应用程序编写一个插件,而无需触及主应用程序的代码(并冒险破坏某些内容).

我已经写了基础"IPlugin"接口(atm,还没有实现)

这是我加载的方式:

public static void Load()
{
    // rawr: http://www.codeproject.com/KB/cs/c__plugin_architecture.aspx
    String[] pluginFiles = Directory.GetFiles(Plugins.PluginsDirectory, "*.dll");
    foreach (var plugin in pluginFiles)
    {
        Type objType = null;
        try
        {
            //Assembly.GetExecutingAssembly().GetName().Name
            MessageBox.Show(Directory.GetCurrentDirectory());
            Assembly asm = Assembly.Load(plugin);
            if (asm != null)
            {
                objType = asm.GetType(asm.FullName);
                if (objType != null)
                {
                    if (typeof(IPlugin).IsAssignableFrom(objType))
                    {
                        MessageBox.Show(Directory.GetCurrentDirectory());
                        IPlugin ipi = (IPlugin)Activator.CreateInstance(objType);
                        ipi.Host = Plugins.m_PluginsHost;
                        ipi.Assembly = asm;
                    }
                }
            }
        }
        catch (Exception e)
        {
            MessageBox.Show(e.ToString(), "Unhandled Exception! (Please Report!)", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Information);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

一位朋友试图提供帮助,但我真的不明白出了什么问题. …

c# plugins extensibility

33
推荐指数
3
解决办法
3万
查看次数

标签 统计

c# ×1

extensibility ×1

plugins ×1