如何正确地将实现细节解耦到.net中的类库中

Dmi*_*try 1 .net c# design-patterns decoupling dynamic-loading

我想知道在c#(或者甚至是cli)中是否有一种标准方法可以有效地将实现逻辑分离为单独的类库/程序集,这些库/程序集将由一个进程动态加载,该进程将基于公共接口对这些库执行操作.

更确切地说:假设我正在构建一个接收消息的服务,并将这些消息的处理委托给其他人.就像是:

while(true){
   message = read_message_from_somewhere();
   class_from_another_lib.do_somthing_with_Message(message); 
}
Run Code Online (Sandbox Code Playgroud)

我希望进程从某种配置中在运行时加载类lib.我假设lib会有一些主类或类工厂实现一些接口部分,如下所示:

ISomePublicIface{
   void do_somthing_with_Message(messageT);
}
Run Code Online (Sandbox Code Playgroud)

这一切都感觉有些java isish我需要做的就是在一个程序集中使用一个类可注入的接口在应用程序配置中添加一行并免费获得一些东西.

lnm*_*nmx 6

请查看.NET 4.0中包含的托管扩展性框架(MEF).MEF可以动态加载和注入外部DLL的组件.