- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遇到了以下问题:
var catalog = new AggregateCatalog();
catalog.Catalogs.Add(new AssemblyCatalog(typeof(Type1).Assembly));
catalog.Catalogs.Add(new AssemblyCatalog(typeof(Type2).Assembly));
using (CompositionContainer container = new CompositionContainer(catalog))
{
}
我还需要一个导出:
Export[(typeof(Type3))]
问题是我不能在具有此 Export 属性的类中包含一个程序集。我想告诉容器:
var myObject = new Type4();
myObject(Type4 的实例)应该在每次需要 Import[(typeof(Type3))] 时导出。此外,我不能用 Export[(typeof(Type3))] 标记 Type4,而且我希望 MEF 使用该类的实例(所以用 Export 属性标记这个类不起作用,因为我之前更改了 myObject我将它传递给 MEF,并希望它用于满足 Import 的要求)。
然后当我尝试做的时候:
container.SatisfyImportsOnce(importer);
我希望 MEF 将从目录中的程序集中获取所有对象,对于缺少的 Type3,它将使用 myObject。这应该是我这样做时的值(value):
container.GetExportedValue<Type3>();
我花了一天时间尝试不同的方法:自定义 ExporterProvider 和从 Type4 继承的某种类型以使用适当的 Export 属性标记它,但我无法让它按我想要的方式工作。
非常感谢您的帮助。
谢谢!
最佳答案
好的,已经找到答案了。
第一个问题是我将 2 个相同的 AssemblyCatalog 添加到 AggregateCatalog - 不要那样做。
解决方案是使用 CompositionBatch:
var catalog = new AggregateCatalog();
catalog.Catalogs.Add(new AssemblyCatalog(typeof(Type1).Assembly));
catalog.Catalogs.Add(new AssemblyCatalog(typeof(Type2).Assembly));
var myObject = new Type4();
using (CompositionContainer container = new CompositionContainer(catalog))
{
var batch = new CompositionBatch();
Export ex = CreateExport<Type3>(myObject); //Custom implementation
batch.AddExport(ex);
container.Compose(batch);
var val = container.GetExportedValue<Type3>(); //value == myObject
}
谢谢!
关于mef - 如何将满足导入的类的实例添加到 CompositionContainer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22517090/
我遇到了以下问题: var catalog = new AggregateCatalog(); catalog.Catalogs.Add(new AssemblyCatalog(typeof(Type
我计划在 ASP.NET 中使用 MEF,以深入了解 CompositionContainer 的线程安全性。 我的第一种方法将不同的 CompositionContainer 与每个请求相关联,但我
在 WCF 服务项目中,我为 MEF CompositionContainer 创建了一个简单的包装器以简化其实例化: internal class CompositionProxy { pr
我一直在为基于 Web 的应用程序使用 Windsor IoC 容器,以解析应用程序应使用的数据访问层实现。 Web 应用程序的 UI 将由页面组成,每个页面由称为 portlet 的小单元组成。 (
我有一个基于 MEF 的解决方案,它有一个接口(interface)的多个导出实现。 我想做的是有一个开关,可以删除所有 与接口(interface)关联的当前部分,并在它们的位置上,仅用一个实现替换
基于此问题的答案What's the difference between CompositionBatch and catalogs?其中指出,在对象由其他组件构建的情况下,组合批处理的使用非常有用
到目前为止,我在 MEF 中遇到的最大问题是,当我在我的插件加载器包装器中组合部件时,当它发现其中一个程序集的导入解析问题时完全加载。理想情况下,我希望 ComposeParts 表现出某种“忽略并继
我是一名优秀的程序员,十分优秀!