.NET Core - 更改控制器中的依赖关系

2024-02-02

我正在开发一个 Web 应用程序(.net core 2.2)并尝试替换控制器中对查询字符串参数的现有依赖项。我知道,可以替换 Startup.cs 中的依赖项(ConfigureServices(IServiceCollection services)方法)。但问题是我无法访问控制器中的“IServiceCollection”。你们知道如何实现它吗?

这就是在Startup中替换依赖的方法。 “ServiceCollectionDescriptorExtensions”具有“替换”方法。

services.Replace(ServiceDescriptor.Scoped<IFooService,AnotherVersionOfFooService>());

https://learn.microsoft.com/en-us/dotnet/api/microsoft.extensions.dependencyinjection.extensions.servicecollectiondescriptorextensions?view=dotnet-plat-ext-3.1#Microsoft_Extensions_DependencyInjection_Extensions_ServiceCollectionDescriptorExtensions https://learn.microsoft.com/en-us/dotnet/api/microsoft.extensions.dependencyinjection.extensions.servicecollectiondescriptorextensions?view=dotnet-plat-ext-3.1#Microsoft_Extensions_DependencyInjection_Extensions_ServiceCollectionDescriptorExtensions

Thanks


像这样的东西...

公开课服务集合 {

    public IConfiguration Configuration { get; }
    public IServiceCollection Services { get; }
    public ServicesCollections()
    {
    }
    public ServicesCollections(IConfiguration configuration, IServiceCollection services)
    {
        Configuration = configuration;
        Services = services;
    }


}


/// <summary> Generic singleton with double check pattern and with instance parameter </summary>
/// <typeparam name="T"></typeparam>
public class SingleObject<T> where T : class, new()
{
    /// <summary> Lock object </summary>
    private static readonly object _lockingObject = new object();

    /// <summary> Instance </summary>
    private static T _singleObject;

    /// <summary> ctor </summary>
    public SingleObject()
    {
    }

    /// <summary> Instance with parameter </summary>
    /// <param name="param">Parameters</param>
    /// <returns>Instance</returns>
    public static T Instance(params dynamic[] param)
    {
        if (_singleObject == null)
        {
            lock (_lockingObject)
            {
                if (_singleObject == null)
                {
                    _singleObject = (T)Activator.CreateInstance(typeof(T), param);
                }
            }
        }
        return _singleObject;
    }
}

在你的启动中——

公共无效ConfigureServices(IServiceCollection服务) { services.AddControllersWithViews();

        services.Configure<CookiePolicyOptions>(options =>
        {
            //This lambda determines whether user consent for non-essential cookies is needed for a given request.
            options.CheckConsentNeeded = context => true;
            options.MinimumSameSitePolicy = Microsoft.AspNetCore.Http.SameSiteMode.None;
        }
       );

        services.AddMvc().SetCompatibilityVersion(Microsoft.AspNetCore.Mvc.CompatibilityVersion.Latest);

        services.AddMvc()
            .AddControllersAsServices();

        JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();
        services.AddRazorPages();


       var configs = Interfaces.SingleObject<Interfaces.ServicesCollections>.Instance(Configuration, services);
        services.AddScoped<ServicesCollections>();
        services.AddTransient(ctx => new SSO.Gateway.Web.Controllers.LoginController(configs));

配置身份服务器(服务);

    }

在你的控制器中——

public class YourController : Controller
{
    public YourController (ServicesCollections obj)
    {
        Configuration = obj.Configuration;
        Services = obj.Services;
        ConfigureServices();
    }

    public IConfiguration Configuration { get; }

    public IServiceCollection Services { get; }

    public void ConfigureServices()
    { 

    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

.NET Core - 更改控制器中的依赖关系 的相关文章

  • ASP.NET Web API 依赖注入

    我想知道是否可以在 ASP NET Web API 中进行依赖项注入 自定义构造函数 而无需使用第三方库 例如 Unity 或 StructureMap 且无需实体框架 我想要实现的是拥有一个带有构造函数的控制器 例如 public Con
  • 使用 sed 删除非字母数字字符

    我正在尝试验证一些输入以删除一组字符 只允许使用字母数字字符加 句点 下划线 连字符 我测试了正则表达式 w here http gskinner com RegExr http gskinner com RegExr 它与我想要删除的内容
  • 将两个反斜杠替换为一个反斜杠

    我想用单个反斜杠替换带有两个反斜杠的字符串 但是 替换似乎不接受 作为替换字符串 这是解释器的输出 gt gt gt import tempfile gt gt gt temp folder tempfile gettempdir gt g
  • 如何将窗口注入到服务中?

    我正在用 TypeScript 编写一个 Angular 2 服务 它将利用localstorage 我想注入对浏览器的引用window对象到我的服务中 因为我不想引用任何全局变量 例如 Angular 1 x window 我怎么做 这目
  • Windows批处理文件:将结构转换为单行字符串

    我需要将这个艰巨的任务作为批处理文件来完成 这对于 C 来说不是最困难的 但在 DOS 中是一个地狱 至少对我来说 我需要将结构转换为单个 var 字符串 才能在我的程序中再次将它们转换为该结构 别担心回归 一切都已经完成了 该结构的大小会
  • 如何使用 std::string 将所有出现的一个字符替换为两个字符?

    有没有一种简单的方法来替换所有出现的 in a std string with 转义 a 中的所有斜杠std string 完成此操作的最简单方法可能是boost字符串算法库 http www boost org doc libs 1 46
  • 在同一项目中同时使用 AddDbContextFactory() 和 AddDbContext() 扩展方法

    我正在尝试使用新的DbContextFactory中讨论的模式EF Core 文档的 DbContext 配置部分 https learn microsoft com en us ef core dbcontext configuratio
  • 匹配所有有效格式 IPv6 地址的正则表达式

    乍一看 我承认这个问题看起来像是这个问题以及与之相关的任何其他问题的重复 匹配有效 IPv6 地址的正则表达式 https stackoverflow com questions 53497 regular expression that
  • 为什么在 CDI 中使用构造函数而不是 setter 注入?

    我在这里找不到任何合理的答案 所以我希望它不是重复的 那么为什么我应该更喜欢 setter 或构造函数注入而不是简单的注入 Inject MyBean bean 如果您需要在类初始化期间对注入的 bean 执行某些操作 我会使用构造函数注入
  • 使用 PHPUnit 和 Mockery 进行 Laravel 测试 - 设置控制器测试的依赖关系

    在终于通过了我愚蠢的简单测试后 我有一种感觉 我做得不对 我有一个 SessionsController 负责显示登录页面并让用户登录 我决定不使用外观 这样我就不必扩展 Laravel 的 TestCase 并在单元测试中承受性能影响 因
  • 替换 Python 列表/字典中的值?

    好的 我正在尝试过滤传递给我的列表 字典并稍微 清理 它 因为其中有某些值我需要删除 所以 如果它看起来像这样 records key1 AAA key2 BBB key3 CCC key4 AAA 我如何快速轻松地运行所有内容并将 AAA
  • 在约束验证器中使用 Guice 进行依赖注入

    我有一个在 ConstraintValidator 的实现中注入类的用例 我正在使用 Google guice 进行依赖项注入 目前无法在验证器内注入 我的场景的简化形式 内部模块 Provides Singleton public Ser
  • 与仅调用依赖函数/类相比,在 FastAPI 中使用 Depends 有哪些优点?

    FastAPI 提供了way https fastapi tiangolo com tutorial dependencies 通过其自己的依赖关系解析机制来管理依赖关系 例如数据库连接 它类似于一个pytest夹具系统 简而言之 您在函数
  • Laravel 5 包中依赖注入的最佳方法

    我正在为 Laravel 5 开发一个包 现在我需要受益于依赖注入来拥有一个更具可扩展性和可靠性的应用程序 我不知道最好采用哪种方法以及为什么 这是我的一段代码 我需要注射Lang类依赖 class MyController extends
  • 将 NSAttributedString 的子字符串替换为另一个 NSAttributedString

    我想替换一个子字符串 例如 replace of an NSAttributedString和另外一个NSAttributedString 我正在寻找一种等效的方法NSString s stringByReplacingOccurrence
  • AngularJS:服务、提供商、工厂

    之间有什么区别Service Provider and Factory在 AngularJS 中 从我得到的 AngularJS 邮件列表一个惊人的线程 https groups google com forum msg angular 5
  • 将可点击的锚标记转换为 html 文档中的纯文本

    我正在尝试匹配 a 我的内容中的标签 并将其替换为链接文本 后跟打印版本的方括号中的 url 如果只有 href 则以下示例有效 如果 a 包含另一个属性 它匹配太多并且不会返回所需的结果 我怎样才能匹配 URL 和链接文本 就是这样 这是
  • Eclipse:如何增加查找/替换历史记录?

    查找 替换对话框显示最后 8 个条目 该对话框通过 Ctrl F 显示 我想增加 查找 和 替换为 输入字段的历史记录中显示的条目数 我必须搜索并替换几个字符串和正则表达式 因此我一次又一次地输入字符串和正则表达式 我并不是指文件内容更改的
  • Python - 用逗号分割,跳过括号内的内容

    我需要用逗号分隔字符串 但我对这种情况有一个问题 TEXT EXAMPLE THIS IS A EXAMPLE BUT NOT WORKS FOR ME SECOND THIRD 我想拆分并得到 var 0 TEXT EXAMPLE THI
  • Java替换特定字符

    这是我在这个网站上的第一个问题 所以我会尽量不要成为一个十足的菜鸟 我目前正在用java 创建刽子手游戏 所以我问你的问题是我们是否被赋予了 幽灵 这个词 并将 Ghost 替换为 hiddenWord ghost length for i

随机推荐

  • 替换所有与正则表达式匹配的匹配项

    我有一个正则表达式 用于搜索包含以下内容的字符串 00 or 11 如下 00 11 我想做的是将所有与模式匹配的出现替换为 X00X or X11X 例如 字符串 00 0 11 会导致 X00X 0 X11X 我正在研究 Python
  • 使用 ReactJS 映射数组的数组

    所以我想做的是映射数组的数组 首先 我从简单开始并开始工作 一个简单的国家 地区数组 嗯 国家 地区代码 countries map value index gt return span h2 Hello world h2 hr span
  • 在 CustomScrollView 中使用 StreamBuilder 和 SliverLists

    我正在尝试使用StreamBuilder获取数据 我想使用显示该数据SliverList全部在一个CustomScrollView这样我就可以利用附带的功能CustomScrollView 关于如何实现这一目标有什么想法吗 当然 这很简单
  • 使用单个控制器控制多个 html5 音轨

    我正在尝试为网站实现一个非常小的音频播放器 界面相当简单 它有一个播放 暂停按钮和一个静音 取消静音按钮 我遇到的问题是为不同的曲目实现同一播放器的多个实例 播放器的 javascript 是 jQuery function var myA
  • 多个 ACS 网址

    我们使用 PingFederate 进行 SSO 并且是 SP 发起的 Ping Federate 将像 Idp 一样行事 对于应用程序 有 2 个网络服务器 用于高可用性 我的问题是 1 我们可以提供两个默认的url 在控制台中只能设置一
  • 如何使用 Gson 反序列化 ConcurrentMap

    我正在尝试反序列化一个具有ConcurrentMap但我得到了一个例外 Caused by java lang IllegalArgumentException Can not set java util concurrent Concur
  • 访问 Meteor 中的 node.js 文件系统模块

    我正在创建一个网络应用程序 它将编辑存储在用户硬盘上的一些配置文件 并决定尝试一下 Meteor 我想使用 Node js 的文件系统模块来处理配置文件的 I O 但我无法弄清楚如何包含该模块 经过一番搜索 我在 StackOverlow
  • 使用 Google Drive .NET API 创建文件的空响应

    我正在尝试使用 Google Drive NET API v3 将文件上传到我的云端硬盘 我的代码如下 static string Scopes DriveService Scope Drive DriveService Scope Dri
  • CUDA:从内核调用 __device__ 函数

    我有一个内核调用deviceif 语句中的函数 代码如下 device void SetValues int ptr int id if ptr threadIdx x id question related to here ptr thr
  • 部署 lambda 函数时如何从无服务器获取 API 网关 ID 作为输出部分

    我想在无服务器的输出部分获取API网关的ID 然后将其转换为我的API URL https fgh5t4tjm2 execute api us east 1 amazonaws com dev 在另一个无服务器中使用 下面是我通过在无服务器
  • 相同的片段、edittext 和 requestfocus 问题

    很抱歉再次就此事寻求帮助 但所有其他帖子都没有帮助 场景如下 我有一个活动 A 其中包含一个布局 其中有一个片段 该片段根据用户输入进行交换 其中一个片段里面有一个编辑文本 我想专注于创建并显示该死的软键盘 因此 在我使用的片段的 onCr
  • PHP:如何将正则表达式转换为示例匹配?

    我有一个用于匹配 URI 的正则表达式 例如 preg match my uri i my uri whatever 我用它来路由 例如 http www mywebsite com my uri page html http www my
  • 在 pandas 中为 python 创建虚拟变量

    我正在尝试使用 python 中的 pandas 从分类变量创建一系列虚拟变量 我遇到过get dummies函数 但每当我尝试调用它时 我都会收到一个错误 指出名称未定义 任何创建虚拟变量的想法或其他方法将不胜感激 EDIT 由于其他人似
  • 将一系列趋势线方程获取到形状文本框

    我试图将图表中第一个系列的趋势线方程获取到工作表上其他位置的形状文本框 但是 只有当我逐行执行代码时 我才能正确填充文本框 在运行时它没有效果 For Each chtObj In ActiveSheet ChartObjects Set
  • 如何获取联系人照片 URI

    我正在与 Android Contact ContentProvider 合作 我有一个电话号码我需要得到URI of the Photo与此电话号码关联的联系人 我该怎么做 我知道我可以得到raw data照片并构建输入流 但我不需要输入
  • 在 jQuery 中向给定日期添加天数[重复]

    这个问题在这里已经有答案了 我有一个包含三个字段的表单 start date days end date 我想通过在开始日期上添加天数来获取结束日期 我的 jQuery 代码是 days change function var start
  • 硬件断点始终为 EXCEPTION_SINGLE_STEP

    我有一个充当调试器的程序 我为线程设置了一个 hw bp 将 dr0 设置为我想要 bp 所在的地址 并将 dr7 设置为 1 因为我希望 bp 在每次执行该地址时生成一个事件 它有效 但现在的问题是我一直没有停止接收 EXCEPTION
  • 当我尝试在 Excel 工作表上运行查询时出现“名称无效括号”错误

    为了制作一些报告 我需要解析一些 Excel 文件 当我尝试从工作表中选择记录时 出现下一个错误 名称 1 的括号无效 页 这是我的代码 OleDbDataAdapter myCommand new OleDbDataAdapter SEL
  • 如何使用泛型来替代一堆处理不同类型的重载方法?

    我有一堆重载方法 它们都获取某种类型的数组作为参数 并从该数组返回一个随机值 function GetRandomValueFromArray Arr array of String String overload begin Result
  • .NET Core - 更改控制器中的依赖关系

    我正在开发一个 Web 应用程序 net core 2 2 并尝试替换控制器中对查询字符串参数的现有依赖项 我知道 可以替换 Startup cs 中的依赖项 ConfigureServices IServiceCollection ser