如何使用 Ninject 将 ModelState 作为参数注入?

2023-12-03

我对 Ninject 很陌生。我想找到一种方法将控制器的 Modelstate 进一步传递到服务层。

我现在拥有的:

       private readonly IAccountService service; 

       public AccountController(ILanguageService ls, ISessionHelper sh)
        {
            this.service = new AccountService(new ModelStateWrapper(this.ModelState));
            this.languageService = ls;
            this.sessionHelper = sh;

        }

    public AccountService(IValidationDictionary validationDictionary)
    {
        this.validationDictionary = validationDictionary;
    }

我想要以某种方式到达:

       private readonly IAccountService service; 

       public AccountController(ILanguageService ls, ISessionHelper sh, IAccountService as)
        {
            this.service = as;
            this.languageService = ls;
            this.sessionHelper = sh;

        }

    public AccountService(IValidationDictionary validationDictionary)
    {
        this.validationDictionary = validationDictionary;
    }

但正如您所看到的,AccountService 将永远无法接收 IValidationDictionary,因为它从未作为参数从 AccountController 发送。

有可能实现吗?或者这只是我必须忍受的事情之一?


ModelState 是应用程序的一部分runtime状态。因此,当您使用 Ninject 编写应用程序时,它不可用。

您可以通过创建一个来解决此限制抽象工厂来创造你的AccountService并使其成为应用程序运行时状态的一部分。

public interface IAccountServiceFactory
{
    IAccountService Create(IValidationDictionary validationDictionary);
}

public class AccountServiceFactory
{
    public IAccountService Create(IValidationDictionary validationDictionary)
    {
        return new AccountService(validationDictionary);
    }
}

然后在您的 AccountController 中,注入 AccountServiceFactory 而不是 AccountService。

   private readonly IAccountServiceFactory serviceFactory; 

   public AccountController(ILanguageService ls, ISessionHelper sh, IAccountServiceFactory asf)
    {
        this.serviceFactory = asf;
        this.languageService = ls;
        this.sessionHelper = sh;

    }

    public void DoSomething()
    {
        var accountService = this.serviceFactory.Create(new ModelStateWrapper(this.ModelState));

        // Do something with account service
    }

或者,您可以通过每个需要的公共方法调用将运行时依赖项直接传递到帐户服务。

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

如何使用 Ninject 将 ModelState 作为参数注入? 的相关文章

随机推荐

  • ASP.NET 中的线程、TPL 与异步委托

    我有一个在生产中运行良好的应用程序 但我想知道我是否可以更好地实现并发 ASP NET NET 4 C 基本上 它会动态生成 n 个 sql 语句 目前约为 50 个 然后同时运行它们并将数据写入 csv 文件 编辑 首先 我创建一个线程来
  • 将字典列表转换为列表列表

    我知道列表理解可以做到这一点 但我似乎无法弄清楚 目前我有一个字典列表 如下所示 field1 a field2 b field1 c field2 d field1 e field2 f 我正在尝试将其变成 list b a d c f
  • 如何访问MongoDB的oplog(MMS副本集)

    我有一个 MongoDB 副本集MMS 我创建了一个具有所有权限的用户 所有权限都可在 MMS 上使用 但我无法访问本地数据库和 或 oplog 集合 痕迹 mydatabse r1 PRIMARY gt use local switche
  • 由于录制宏时出现语法错误,无法运行 Visual Basic 编辑器

    我有点惊讶 因为我正在尝试recordExcel 中的宏 但我不断收到此错误 Cannot Run Visual Basic Editor Because of a Syntax error 最令人惊讶的部分是我还没有尝试运行任何宏 只是尝
  • 防止某些 HTML 元素被复制

    我不完全确定如何去研究这个想法 我确信它已经完成了 但我在阐明它以进行有效的 Google 搜索时遇到了问题 我有一个结果页面 可以选择将结果下载到 csv 但我想有时用户宁愿只是复制并粘贴页面上的可见结果 我怎样才能得到它 以便当他们复制
  • 使用background-size:cover时如何获取图像的比例?

    我需要计算出图像缩放了多少 我正在设置背景图像body与background size cover 基本上 无论屏幕尺寸是什么 图像将始终保持其纵横比并扩展 或缩小 直到填满屏幕的宽度和高度 然后它会自行定位 使其在垂直和水平方向上居中 并
  • 下面的 URLConnection 出了什么问题?

    也可以看看 Objective C 带有 Cookie 的异步 Web 请求 我花了一天时间写这段代码 谁能告诉我这里出了什么问题吗 WSHelper 是从 NSObject 继承的 我什至尝试过 NSDocument 和 NSObject
  • GooglePlayServicesUtil 与 GoogleApiAvailability

    我正在尝试在我的 Android 应用程序中使用 Google Play 服务 正如Google文档所说 我们在使用Google API之前需要检查它是否可用 我已经搜索了一些方法来检查它 这是我得到的 private boolean ch
  • 从代码隐藏设置 ResourceDictionary DataContext

    我正在尝试从资源字典后面的代码设置一个 ResourceDictionary DataContext 我有一个使用自己的样式 资源字典 的数据模板 该样式包含一个具有自己的样式的复选框 在 CheckBox Checked 事件中 我想引用
  • iOS iPhone 5 选择正确的故事板

    我尝试在我的 iOS 项目中使用这两个故事板 但我无法获取切换到适当故事板的代码 相反 该代码绝对不执行任何操作 是不是我没有正确设置控制开关的设置 非 iPhone 5 设备的主故事板称为 MainStoryboard iphone 5合
  • 如何在 Xamarin 中的视图控制器之间传递数据

    我正在尝试在我的第一个和第二个之间传递一些数据ViewController 我已经实例化了第二个视图控制器 如下所示 RegistrationViewController registration new RegistrationViewC
  • Python 中的 NLP:矢量化后从 SelectKBest 获取单词名称

    我似乎无法找到我的确切问题的答案 有人可以帮忙吗 我的数据框 df 的简化描述 它有 2 列 一列是一堆文本 注释 另一列是一个二进制变量 指示解析时间是否高于平均水平 y 我对文本做了词袋 from sklearn feature ext
  • phpMyAdmin - 无法连接 - 无效设置 - 自从我添加 root 密码以来 - 被锁定

    我运行XAMPP 几天前 我通过 phpmyadmin 设置了 root 密码 从那一刻起我就无法访问 phpMyAdmin 我按照帮助这个链接但那里一切似乎都很好 在 config inc php 中 我什至尝试完全卸载 xampp 重新
  • 旋转动画不适用于 chrome

    我制作的动画可以在 Firefox 上运行 但不能在 Chrome 上运行 我已经尝试了十几种解决方案 但似乎无法使其发挥作用 这是我的代码 path animation name turn transform origin 50px 50
  • 如何在keycloak管理控制台中对客户端进行IP限制

    我在 keycloak 管理控制台中定义了一个客户端 以使用 client credentials 流授权它在我的应用程序中调用服务器到服务器 api 一切都很好 我想对该客户端应用 IP 限制 我可以在管理控制台中的哪里定义此限制 我在k
  • XML 节点的包装组

    我正在使用 PHP5 我需要将 XML 转换为以下形式
  • InvokeExact 对对象,其类型由类加载器动态加载

    我花了一整天的时间来解决这个问题 我的问题是如何对实例进行 MethodHandle invokeExact 调用 该实例的类类型是在程序运行时动态加载的 为了使问题更清楚 我在下面展示了我的示例代码 Class
  • 使用 java applet 查看 .doc 文件

    我有一个网络应用程序 我已经在服务器端生成了 xml 格式的 MS Word 文档 Word 2003 XML 文档 我需要使用某种查看器向客户端用户显示此文档 那么 问题是 我可以使用哪些库来解决这个问题 我需要一个API来在客户端查看w
  • 如何使用xslt将json转换为xml

    如何将 JSON 转换为 XML 考虑
  • 如何使用 Ninject 将 ModelState 作为参数注入?

    我对 Ninject 很陌生 我想找到一种方法将控制器的 Modelstate 进一步传递到服务层 我现在拥有的 private readonly IAccountService service public AccountControll