我有這樣插件在WinForm應用程序
public interface IMFDBAnalyserPlugin
{
string RunAnalysis(string ConnectionString);
}
加載所有DLL在庫
namespace MFDBAnalyser
{
public class PluginManager
{
/// <summary>
/// This function gets the name of the plugins and return that in a datatable dt.
/// </summary>
/// <param name="args"></param>
/// <returns></returns>
static void Main(string[] args)
{
List<string> assemblyNames = new List<string>();
Assembly[] oAssemblies = new Assembly[args.Length];
for(int assemblyCount = 0;assemblyCount < args.Length;assemblyCount++)
{
oAssemblies[assemblyCount] = Assembly.LoadFile(args[assemblyCount]);
try
{
foreach(Type oType in oAssemblies[assemblyCount].GetTypes())
{
// Check whether class is inheriting from IMFServicePlugin.
if(oType.GetInterface("IMFDBAnalyserPlugin") == typeof(IMFDBAnalyserPlugin))
{
assemblyNames.Add(args[assemblyCount].Substring(args[assemblyCount].LastIndexOf("\\") + 1));
}
}
}
catch(Exception ex)
{
EventLog log = new EventLog("Application");
log.Source = "MFPluggerService";
log.WriteEntry(ex.Message);
}
}
// Passing data one application domain to another.
AppDomain.CurrentDomain.SetData("AssemblyNames", assemblyNames.ToArray());
}
}
}
一個功能和其他接口類我需要的是返回字符串,我在RunAnalysis方法中寫道
public class PrimaryKeyChecker : IMFDBAnalyserPlugin
{
public string RunAnalysis(string ConnectionString)
{
return "Hello Srivastav!";
}
}
但它有一個Program.cs類作爲t的主入口點他的申請。
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new MFDBAnalyser());
}
}
}
所以它顯示的錯誤是,在一個應用程序中沒有兩個main可以存在。 我需要從pliginmanager.cs
我很困惑獲得方法火... u人都可以請看看我的問題
你是直接使用`PluginManager`類嗎?如果是,請停止這樣做。接下來奇怪的是,`MFDBAnalyser`是一個名字空間,因此不能用`new`實例化。不要誤解我的意思,但是你的代碼示例中有些東西可能有些蹊蹺或者說錯了。 – Bobby 2010-12-06 10:31:12