Tag: mef

MEF构造器注入

我试图找出MEF的构造函数注入属性。 我不知道如何告诉它加载构造函数的参数。 这是我正在尝试加载的属性 [ImportMany(typeof(BUsers))] public IEnumerable<BUsers> LoadBUsers { get; set; } 这是我用来导入程序集的代码。 try { var catalog = new AggregateCatalog(); catalog.Catalogs.Add(new AssemblyCatalog(System.Reflection.Assembly.GetExecutingAssembly())); catalog.Catalogs.Add(new DirectoryCatalog("DI")); var container = new CompositionContainer(catalog); container.ComposeParts(this); } 这是我正在尝试加载的课程 [Serializable] [Export(typeof(BUsers))] public class EditProfile : BUsers { [ImportingConstructor] public EditProfile(string Method, string Version) { Version = "2"; Action = "Edit"; TypeName = "EditProfile"; […]

捕获的.NETexception是意外的空

请参阅下面的说明正在发生的事情 我有一个非常奇怪的问题,捕获的exception是null。 代码使用MEF并尽力报告组合错误。 使用debugging器,我可以看到抛出的exception( InvalidOperationException ),但是当它被下面的代码中的最后一个catch块捕获时, exvariables为null。 在debugging器和正常执行代码时都是如此。 static T ResolveWithErrorHandling<T>() where T : class { try { IocContainer.Compose(Settings.Default.IocConfiguration); return IocContainer.Resolve<T>(); } catch (ReflectionTypeLoadException ex) { // … special error reporting for ReflectionTypeLoadException } catch (Exception ex) { // ex is null – that should not be possible! // … general error reporting for other […]

MEF和IoC容器的区别(如Unity,Autofac,SMap,Ninject,Windsor.Spring.net等)

我一直在寻找dependency injection并阅读一些文章。 但是我仍然无法找出MEF与其他IoC之间的区别。 所以,我的问题是这样的:我应该在哪种情况下使用MEF或IoC容器? 为什么在(WPF&Silverlight)或桌面应用程序中使用MEF for PRISM? 而在Web应用程序中,人们使用IoC容器。 那么,决定使用哪种依赖技术的标准是什么呢? 我已经通过文章http://devlicio.us/blogs/casey/archive/2009/12/18/what-is-the-difference-between-an-ioc-container-and-mef.aspx ,但我无法确定任何东西。

Visual Studio 2010插件写文章/教程?

有没有人知道一些关于编写Visual Studio 2010的插件/插件的好文章/教程?

IISExpress与0xc0000008错误崩溃

偶尔在VS2012中使用IISExpress运行我的MVC4站点时,出现以下错误,IISExpress停止: iisexpress.exe: Managed (v4.0.30319)' has exited with code -1073741816 (0xc0000008) 'An invalid handle was specified 事件日志中没有任何内容,我无法findinterweb上的任何东西。 我有一些非常模糊的理论: 我的网站在启动时dynamic使用MEF加载模块。 也许有偶尔的竞争条件,所以IIS不能打开一个程序集,但我的跟踪日志显示,IIS超出了启动周期的一部分。 它也有SignalR,但是除了启动集线器之外还没有做太多的事情。 SignalR是相当新的和未经证实的,但我更新了最新的RC2版本,结果相同。 哦,我也使用VS开发Web服务器时也有同样的错误。 我还没有尝试完整的IIS呢。 任何人都有线索? 谢谢 更新: 我固定了一些似乎使事情稳定一些的nuget引用,然后今天上午又发生了。 VS输出窗口显示这个: 'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Web.Mobile\v4.0_4.0.0.0__b03f5f7f11d50a3a\System.Web.Mobile.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Users\peter.jones\AppData\Local\Temp\Temporary ASP.NET Files\root\a4aa93f7\dfa23a50\App_Web_rpzlbjhw.dll', […]

懒惰的缺点<T>?

我最近开始在我的应用程序中使用Lazy ,而且我想知道在使用Lazy<T>时是否需要考虑一些明显的负面因素? 我试图尽可能多地使用Lazy<T> ,主要是为了减less我们加载的但是不活动的插件的内存占用。

MEF和Unity有什么不同?

我刚开始学习DI(我正在WPF / Silverlight上工作,但是我有一个转移到ASP.NET的计划)。 在我从互联网上读到一些DI文章后,我有两个框架,MEF和Unity。 我想知道他们之间的真实世界有什么不同,哪一个是好的。

寻找沙盒.NET插件的实用方法

我正在寻找一种简单而安全的方式来访问.NET应用程序的插件。 虽然我想这是一个非常普遍的要求,但我正在努力寻找符合我所有需求的任何东西: 主机应用程序将在运行时发现并加载其插件程序集 插件将由未知的第三方创build,所以他们必须被沙箱化,以防止他们执行恶意代码 一个常见的互操作程序集将包含主机及其插件引用的types 每个插件程序集将包含一个或多个实现通用插件接口的类 当初始化一个插件实例时,主机会以主机接口的forms传递一个对自身的引用 主机将通过其通用接口调用插件,插件可能会调用主机 主机和插件将以互操作程序集中定义的types(包括generics)交换数据, 我已经调查了MEF和MAF,但是我正在努力研究如何使它们中的任何一个适合这个法案。 假设我的理解是正确的,那么MAF就不能支持跨越它的隔离边界的genericstypes的传递,这对我的应用是非常重要的。 (MAF的实现也非常复杂,但是如果我能解决genericstypes问题,我会准备好解决这个问题)。 MEF几乎是一个完美的解决scheme,但似乎不符合安全要求,因为它将扩展程序集加载到与主机相同的AppDomain中,因此显然可以防止沙盒。 我已经看到了这个问题 ,它谈到了在沙箱模式下运行MEF,但没有描述如何。 这篇文章指出:“使用MEF时,您必须信任扩展程序不运行恶意代码,或者通过代码访问安全性提供保护”,但是,它并没有描述如何。 最后,有一篇文章介绍了如何防止未知的插件被加载,但这并不适合我的情况,因为即使是合法的插件也是未知的。 我已经成功地将.NET 4.0安全属性应用到我的程序集中,并被MEF正确地重视,但是我不明白这是如何帮助我locking恶意代码的,因为许多框架方法可能是安全威胁如System.IO.File方法)被标记为SecuritySafeCritical ,这意味着它们可以从SecurityTransparent程序集中访问。 我在这里错过了什么? 是否有一些额外的步骤可以告诉MEF它应该为插件程序集提供互联网特权? 最后,我还看到了使用单独的AppDomain创build自己的简单沙盒插件体系结构,如此处所述。 但是,据我所见,这种技术只允许我使用后期绑定来调用不可信程序集中类的静态方法。 当我试图扩展这种方法来创build我的一个插件类的实例时,返回的实例不能被转换为通用的插件接口,这意味着主机应用程序不可能调用它。 是否有一些技术可以用来跨AppDomain边界获得强types的代理访问? 我对这个问题的长度表示歉意。 原因是要展示我已经调查过的所有途径,希望有人能提出一些新的尝试。 Tim非常感谢你的想法

MEF与任何IoC

纵观微软的托pipe扩展性框架(MEF)和各种IoC容器(如Unity),我无法看出何时使用一种types的解决scheme。 更具体地说,似乎MEF处理大多数IoCtypes模式,并且像Unity这样的IoC容器不是必需的。 理想情况下,我希望看到一个很好的使用情况,即使用IoC容器代替MEF,或者除了MEF之外。

我在哪里可以了解MEF?

我和Glenn Block一起看了DNR电视剧集,看起来MEF对我的公司很有用。 我正在试图找出更多关于它的优点和缺点的信息以及一些使用它的示例项目。 有什么好的博客/教程使用MEF? 注:我使用C#,所以如果在C#中的例子,这将是很棒的。