- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
基于此问题的答案What's the difference between CompositionBatch and catalogs?其中指出,在对象由其他组件构建的情况下,组合批处理的使用非常有用。这让我思考,它适用于现实生活中的哪个例子?然后我开始思考那些你无法控制的构建对象。如果您无法添加未标记为导出的部件,您将如何将这些实例添加到容器中?唯一想到的就是设置一个具有所需类型成员的类并将其标记为导出。
如果实例未标记为导出,是否可以将实例添加到容器中?
最佳答案
我假设您的意思是“未标记为导出的类”而不是“实例”。
对于 .NET4.5 及更高版本,您可以使用 MEF's convention model .
对于 .NET4,Mark Seemann 有 blogged关于如何巧妙地使用泛型和属性导出来导出现有类型。您可以创建一个这样的类:
public class MefAdapter<T> where T : new()
{
private readonly T export;
public MefAdapter()
{
this.export = new T();
}
[Export]
public virtual T Export
{
get { return this.export; }
}
}
然后您可以构建一个类型目录来导出不支持 MEF 的现有类型,如下所示:
var catalog = new TypeCatalog(
typeof(MefAdapter<Foo>),
typeof(MefAdapter<Bar>),
...);
您可以修改此示例以添加对带有构造函数参数的类型的支持、导出接口(interface)而不仅仅是类类型等。
关于.net - MEF:将未标记为 [export] 的部件添加到 CompositionContainer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11112743/
我遇到了以下问题: 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 表现出某种“忽略并继
我是一名优秀的程序员,十分优秀!