【问题标题】:Replacement Implementation for Provider Model in ASP.NET 5ASP.NET 5 中提供程序模型的替换实现
【发布时间】:2015-08-15 05:30:04
【问题描述】:

我有现有代码使用 System.Configuration.Provider 命名空间作为提供程序集合来插入接口的各种实现,其中集合中存在多个实现,并根据各种逻辑按名称选择。

此命名空间在 .net core 中不可用,因此我正在寻找有关如何实施可与 .net core 框架一起使用的替代解决方案的建议。

我知道如果我只是想插入一个实现,我可以通过依赖注入来做到这一点。但我正在寻找一种方法,可以根据名称选择多种实现。

我当前使用提供程序模型的实现从一个文件夹中填充提供程序集合,您可以在该文件夹中放入声明实际实现类型的 xml 文件,因此只需将另一个文件添加到程序集中,就可以从程序集中加载提供程序的新实现文件夹。我希望逻辑尽可能与此相似,但我对 json 文件而不是 xml 持开放态度。

我想我可以从 Startup 中的 json 文件加载接口的实现集合,并使用依赖注入在需要的地方提供集合,或者可以获取集合的接口可能会更轻,并允许在何时获取它们它们是需要的,而不是在启动时。

这是正确的方法吗?有人有更好的想法或做过类似的事情吗?

【问题讨论】:

    标签: asp.net-core provider-model


    【解决方案1】:

    这比在新框架中使用像ProviderBase 这样的抽象基类更通用。您可以使用 DI 框架注册多个相同的服务,并通过请求您注册它们的类型的 IEnumerable<> 或使用 GetRequiredServices<> 扩展方法来获取它们。但是,一旦您获得了服务,您将需要一些其他方式来区分它们,例如指示唯一名称的属性,这是 ASP.Net 团队一直遵循的模式。

    您可以在 Identity framework v3 中看到一个带有 Token Providers 的示例。

    【讨论】:

      猜你喜欢
      • 2010-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-10
      • 1970-01-01
      相关资源
      最近更新 更多