3

我想知道如何设计应用程序,实际上是 Firefox 或 Chrome 等应用程序,您可以为它们下载插件并使用??!!在.Net中怎么做???

4

3 回答 3

3

如何允许其他人为您的应用制作附加组件?

1>您创建一个DLL具有interface. 这interface定义了一组方法、属性、您希望其他人定义和实现的事件。

插件开发者需要定义这个接口。这个DLL是你的应用程序和插件开发者需要的。

2>插件开发人员将使用该共享DLL并通过定义其中的方法或属性来实现接口。

3>您的应用程序现在将加载该插件并将其转换为共享 DLL interface,然后调用所需的方法、属性,即接口中定义的任何内容..

您的应用程序将如何获取插件?

您创建一个folder搜索plugins.This 的文件夹,这是其他人所在的文件pluginsinstalledplaced.


例子

这是您的共享 dll

//this is the shared plugin
namespace Shared 
{
    interface IWrite 
    {
        void write();
    }
}

插件开发者

//this is how plugin developer would implement the interface
using Shared;//<-----the shared dll is included
namespace PlugInApp 
{
    public class plugInClass : IWrite //its interface implemented
    {
        public  void write() 
        {
            Console.Write("High from plugInClass");
        }
    }
}

这是你的程序

using Shared;//the shared plugin is required for the cast
class Program
    {
        static void Main(string[] args)
        {
            //this is how you search in the folder
            foreach (string s in Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory, "*PlugIn.dll"))//getting plugins in base directory ending with PlugIn.dll
            {
                Assembly aWrite = Assembly.LoadFrom(s);
                //this is how you cast the plugin with the shared dll's interface
                Type tWrite = aWrite.GetType("PlugInApp.plugInClass");
                IWrite click = (IWrite)Activator.CreateInstance(tWrite);//you create the object
                click.write();//you call the method
            }
        } 
    }
于 2012-12-01T10:20:40.100 回答
2

您应该使用托管可扩展性框架 (MEF)。

http://mef.codeplex.com/

http://msdn.microsoft.com/en-us/library/dd460648.aspx

于 2012-12-01T09:54:49.490 回答
0

使用 MEF。

托管可扩展性框架 (MEF) 是 .NET 中的一个新库,可以更好地重用应用程序和组件。使用 MEF,.NET 应用程序可以从静态编译转变为动态组合。如果您正在构建可扩展应用程序、可扩展框架和应用程序扩展,那么 MEF 适合您。

MEF 的有用链接。

http://mef.codeplex.com/

http://www.codeproject.com/Articles/376033/From-Zero-to-Proficient-with-MEF

http://www.codeproject.com/Articles/232868/MEF-Features-with-Examples

于 2012-12-01T11:13:12.597 回答