什么是这个CompositionContainer代码在我的c# windows服务
本文关键字:我的 windows 服务 代码 CompositionContainer 什么 | 更新日期: 2023-09-27 17:51:00
我正在查看一个现有的c# windows服务项目,我有这个函数,在它的构造函数ie中调用。在win服务OnStart事件之前。有人能解释一下这是干什么用的吗?如果我把它从我的服务中删除呢?
private void Compose()
{
CompositionContainer container = null;
try
{
string codebase = AppDomain.CurrentDomain.BaseDirectory;
var catalog = new DirectoryCatalog(codebase);
container = new CompositionContainer(catalog);
container.ComposeParts(this);
}
catch (CompositionException ex)
{
foreach (var error in ex.Errors)
{
_logger.Fatal("Error when loading plugin", error.Exception);
}
}
catch (ReflectionTypeLoadException ex)
{
foreach (var error in ex.LoaderExceptions)
{
_logger.Fatal("Error when searching for plugin", error);
}
}
catch (Exception ex)
{
_logger.Fatal("Error when loading plugin", ex);
}
finally
{
if (container != null)
{
container.Dispose();
}
}
}
它的MEF就在那里(允许你按需加载插件)。更多详细信息请参见
http://msdn.microsoft.com/en-us/library/system.componentmodel.composition.hosting.compositioncontainer (v = vs.110) . aspx
在不确定catalog
中的内容的情况下,我的猜测是不应该删除此代码。CompositionContainer
类是微软提供的用于创建和管理可扩展应用程序(即插件)的可扩展框架的一部分,这些可扩展应用程序将由catalog
定义。如果没有这些代码,我假定服务将停止执行其定义的功能。