相关疑难解决方法(0)

在MEF和MAF之间选择(System.AddIn)

托管可扩展性框架(MEF)和托管AddIn框架(MAF,又名System.AddIn)似乎完成了非常类似的任务.根据这个Stack Overflow问题,MEF是System.Addin的替代品吗?,你甚至可以同时使用两者.

你什么时候选择使用一个与另一个?在什么情况下你会选择同时使用它们?

.net add-in mef system.addin maf

159
推荐指数
6
解决办法
5万
查看次数

正确加载程序集,查找类和调用Run()方法

示例控制台程序.

class Program
{
    static void Main(string[] args)
    {
        // ... code to build dll ... not written yet ...
        Assembly assembly = Assembly.LoadFile(@"C:\dyn.dll");
        // don't know what or how to cast here
        // looking for a better way to do next 3 lines
        IRunnable r = assembly.CreateInstance("TestRunner");
        if (r == null) throw new Exception("broke");
        r.Run();

    }
}
Run Code Online (Sandbox Code Playgroud)

我想动态构建一个程序集(.dll),然后加载程序集,实例化一个类,并调用该类的Run()方法.我应该尝试将TestRunner类转换为某些东西吗?不确定一个程序集中的类型(动态代码)如何知道我的(静态程序集/ shell应用程序)中的类型.使用几行反射代码只在一个对象上调用Run()会更好吗?该代码应该是什么样的?

更新:威廉埃德蒙森 - 见评论

.net c# reflection

79
推荐指数
4
解决办法
17万
查看次数

在您的应用程序中实现插件的设计模式?

允许和实现应用程序的插件系统的标准方法是什么?

在我的上一个应用程序中,我为他们必须实现的所有插件创建了一个简单的界面.然后我在apps目录中加载所有程序集,并抛弃任何不实现该接口的程序集.

接口中的一个方法是DoWork()方法,该方法定期在所有已加载的程序集上调用,以执行插件可能具有的任何操作.

什么是"适当"的插件系统方式?你刚刚为插件创建了一个接口吗?你应该定期在所有插件中调用特定方法吗?有更复杂的方式吗?


编辑:

感谢Matt Hamilton对System.Addin命名空间的引用.这很可能是我实现插件的方式.但是,我仍然对插件体系结构一般感到好奇,并且不介意一些关于它们应该被设计的最佳方式的背景知识,以及如何在加载后如何调用它们等等.

.net plugins design-patterns

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

MEF是System.Addin的替代品吗?

可能重复:
在MEF和MAF之间选择(System.AddIn)

Managed Extensibility Framework是System.Addin的替代品吗?或者它们是互补的吗?

.net mef inversion-of-control

17
推荐指数
2
解决办法
4978
查看次数

在.NET中创建插件环境的最佳方法

我读了这篇文章如何在.NET中加载插件?,我真的没有看到微软的System.Addin命名空间的光彩.为什么我不能在我的bin目录中有一个plugins文件夹,用户可以将程序集放入实现我设计的接口?然后我可以使用反射来创建插件类的实例并使用我的界面引用它.

为什么System.Addin显然要好得多?特别是因为它似乎是工作的三倍和不太直观的设计.

.net c# inheritance plugins

10
推荐指数
2
解决办法
7145
查看次数

C#WCF插件的设计和实现

我想得到一些建议.我正在开发一个系统,它将在运行时加载插件并要求它们通过WCF端点可用.

我将有一个仅用于配置的MVC 3 Web应用程序,以及一个将加载不同插件的类库(核心).

我会很感激如何解决这个问题.我想加载插件,然后能够创建一个在IIS 7中注册的WCF端点,以访问该插件.

提前致谢 :)

c# wcf plugins mef

7
推荐指数
1
解决办法
3007
查看次数

在C#中编写Addin或插件框架

我正在用C#编写一个Addin框架,我想知道如何在不需要重新启动应用程序的情况下使Addin无法加载.

我听说过AppDomains但这些有用吗?Addin可以添加可扩展性类,并且可以通过接口在主AppDomain中调用,并且仍然可以卸载并调用清理代码,导致这些类被删除而该程序集不在主AppDomain中吗?

或者是否有其他方法可以实现无法加载的插件,但是除了AppDomain之外的IIRC,你无法卸载组件.

如果可能的话,我还希望插件引擎与Mono兼容,所以如果可以的话,任何答案都会尝试与Mono保持兼容.

.net c# mono plugins add-in

6
推荐指数
1
解决办法
5063
查看次数

如何在C#中加载DLL

我目前有一个DLL(使用C++完成).现在我想在我的C#应用​​程序中加载此DLL以访问某些方法.

我尝试使用此处显示的示例,但它无法工作: 我可以在运行时加载.NET程序集并实例化只知道名称的类型吗?

知道什么是错的吗?有没有办法加载DLL并访问方法?

在此先感谢,Perumal

c#

-5
推荐指数
1
解决办法
7849
查看次数