ASP.NET 5 中提供者模型的替换实现

Replacement Implementation for Provider Model in ASP.NET 5

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

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

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

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

打开

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

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

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

您可以在 Identity framework v3 中查看带有令牌提供程序的示例。