首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能在Kephas的开放泛型服务中使用构造函数。

不能在Kephas的开放泛型服务中使用构造函数。
EN

Stack Overflow用户
提问于 2019-08-23 09:43:31
回答 1查看 24关注 0票数 1

不知何故,我无法让它工作,让一个服务导出为开放泛型与一个实现与构造函数。我试图将CompositionConstructor属性添加到它中,但没有效果。它抛出的东西如下:

代码语言:javascript
复制
System.Composition.Hosting.CompositionFailedException : No importing constructor was found on type 'MyType'.

有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-23 10:50:47

不幸的是,这是System.Composition库中的一个bug (请在这里查看https://github.com/dotnet/corefx/issues/40094)。正如我所看到的,这个bug是添加到5.0里程碑中的,这意味着明年秋天。在我看来,您有以下选择:

  1. 只将实现类保留在默认构造函数中。在这里,您可以使用AmbientServices.Instance.CompositionContainer.GetExport获取所需的依赖项。我知道这不是最好的解决办法,但应该有效。警告:如果服务被标记为作用域,那么如果您依赖于其他作用域服务,您将无法为它们获得正确的范围。
  2. KephasVersion6.5.0为Kephas组合带来了一个Autofac实现,在这个实现中,事情就像他们想象的那样工作。检查https://github.com/kephas-software/kephas/releases的源代码以获得最新版本,并构建所需的nuget。我将尝试在nuget上发布一个测试版。
  3. 为您使用的版本带来您自己的组合实现,以及您选择的DI容器。您可以将Autofac实现作为参考,尽管在最新版本中有几处更改。在选择DI容器时,请确保它支持开放的泛型、元数据和支持IExportFactory接口的方法。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57623652

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档