Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net core ASP.NET 5中提供程序模型的替换实现_Asp.net Core_Provider Model - Fatal编程技术网

Asp.net core ASP.NET 5中提供程序模型的替换实现

Asp.net core ASP.NET 5中提供程序模型的替换实现,asp.net-core,provider-model,Asp.net Core,Provider Model,我有一个现有代码,它使用System.Configuration.Provider命名空间为提供者集合插入接口的各种实现,其中集合中存在多个实现,并根据各种逻辑按名称进行选择 此名称空间在.NETCore中不可用,因此我正在寻找有关如何实现与.NETCoreFramework一起使用的替换解决方案的建议 我知道,如果我只是尝试插入一个实现,我可以通过依赖注入来完成。但我正在寻找一种方法,可以根据名称选择多个实现 我当前的provider模型实现从一个文件夹中填充provider集合,您可以在该文

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

此名称空间在.NETCore中不可用,因此我正在寻找有关如何实现与.NETCoreFramework一起使用的替换解决方案的建议

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

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

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


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

这比在新框架中使用抽象基类(如
ProviderBase
)更通用。您可以向DI框架注册多个相同的服务,只需请求注册类型的
IEnumerable
,或者使用
GetRequiredServices
扩展方法即可获得所有服务。然而,一旦您获得了服务,您将需要一些其他的方法来区分它们,例如一个表示唯一名称的属性,这是ASP.Net团队一直遵循的模式

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

  • ,即“提供者”
  • ,它使用令牌管理器

这比在新框架中使用抽象基类(如
ProviderBase
)更通用。您可以向DI框架注册多个相同的服务,只需请求注册类型的
IEnumerable
,或者使用
GetRequiredServices
扩展方法即可获得所有服务。然而,一旦您获得了服务,您将需要一些其他的方法来区分它们,例如一个表示唯一名称的属性,这是ASP.Net团队一直遵循的模式

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

  • ,即“提供者”
  • ,它使用令牌管理器