加载DLL库并在运行时运行代码

时间:2012-08-01 15:28:15

标签: c# dll runtime dllimport

我有一个C#控制台应用程序,并且喜欢通过用户输入选择在控制台应用程序的运行时期间加载和执行的特定dll库。那可能吗?

因此,例如,我可能有2个dll库,它们具有相同的静态类和Action名称,如下所示:

public static class CoreStrategy
{
    public static Action<List<Quote>> strategyQuoteBuffer = new Action<List<Quote>>(quoteList =>
    {
        Console.WriteLine("I am dll 1");
    });
}

public static class CoreStrategy
{
    public static Action<List<Quote>> strategyQuoteBuffer = new Action<List<Quote>>(quoteList =>
    {
        Console.WriteLine("I am dll 2");
    });
}

如何在我的控制台应用程序的运行时加载其中一个并调用它们,然后再切换一个用于另一个?或者有更好的方法来处理这个?甚至可能与Dlls有不同的方式?要求是每个代码严格包含在自己的dll中,并且事先不能引用dll。如果那不可行,那么你能不提出使用dll的方法吗?感谢

2 个答案:

答案 0 :(得分:2)

您可以使用反射来动态加载未引用的程序集,从该程序集动态加载名为“CoreStrategy”的类,然后动态搜索该类以获取名为strategyQuoteBuffer的静态字段。然后,您可以使用反射来检索该字段,并将其强制转换为Action&lt; List&lt; Quote&gt;&gt;。

执行此操作的代码肯定不会很好,但它是实现您想要的唯一方法。

答案 1 :(得分:2)