创建网站的最佳实践是什么,能够为其开发插件?
就像您想要创建一个博客模块一样,您希望用户或共同开发人员添加插件来扩展此模块功能.
更新: 感谢超速的答案,但我认为这对我来说已经过时了.是不是有一个更简单的解决方案,就像我看到的blogengine插件创建系统你只需要用[Extension]来装饰类插件.
我是中级核心开发人员,所以我在想基类,继承,接口,你怎么看?
Ray*_*ack 12
编辑
我根据您的问题编辑完全重写了我的答案.
让我向您展示使用最少的步骤实现插件架构是多么容易.
第1步:定义插件将实现的接口.
namespace PluginInterface
{
public interface IPlugin
{
string Name { get; }
string Run(string input);
}
}
Run Code Online (Sandbox Code Playgroud)
第2步:创建一个实现IPlugin的插件.
namespace PluginX
{
using PluginInterface;
public class Plugin : IPlugin
{
public string Name
{
get { return "Plugin X"; }
}
public string Run(string input)
{
return input;
}
}
}
Run Code Online (Sandbox Code Playgroud)
第3步:运行插件.
namespace PluginTest
{
using System;
using System.IO;
using System.Runtime.Remoting;
using PluginInterface;
class Program
{
static void Main( string[] args )
{
string pluginFile = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "PluginX.dll");
ObjectHandle handle = Activator.CreateInstanceFrom(pluginFile, "PluginX.Plugin");
IPlugin plugin = handle.Unwrap() as IPlugin;
string pluginName = plugin.Name;
string pluginResult = plugin.Run("test string");
}
}
}
Run Code Online (Sandbox Code Playgroud)
请记住,这只是插件架构的基本,最直接的例子.你也可以做一些事情
AppDomain如果你的设计如此规定.