依赖注入陷阱

2024-04-25

有人在 www 上有一个链接列表来获取 DI 陷阱的好列表吗? 我一直在尝试在 asp.net webforms 应用程序中使用 DI 注入控件,发现在递归构建时 ViewState 会丢失。 开发人员在应用程序中实施 IoC/DI 之前需要注意的问题的文章列表也会很有帮助。


DI 本身没有问题。或者更准确地说,这就像枚举通用编程陷阱,比如传递一个空引用,然后不检查它。

递归构建时 ViewState 丢失

正如某些容器所说,“堆积”通常是一个坏主意,应尽可能避免。看看温莎常见问题解答 http://stw.castleproject.org/Windsor.FAQ.ashx#Why_cant_Windsor_resolve_concrete_types_without_registering_them_first_10出于一些反对积累的充分理由。这适用于所有 IoC 容器。

特别是,在您的情况下,似乎发生的情况是在控件的 LoadViewState() (或页面的 LoadPageStateFromPersistenceMedium())之后发生累积,因此它使视图状态无效。也许你的 IoC 容器提供了一个基本控制类,它已经处理了这个问题,而你忘记了继承它。

恕我直言,在 WebForms 中进行 DI 是如此的 hackish(例如本例),以至于我更喜欢​​诉诸服务位置(仅适用于 WebForms 页面和控件!)。简单,不需要奇怪的技巧。

Now, IoC + DI can有一些问题,例如生命周期/范围问题。Igor Brejc 在本文中对此进行了非常全面的介绍 http://igorbrejc.net/development/c/the-delicate-dance-of-transience。您必须牢记这一点,特别是在具有大量组件的复杂/大型应用程序中。

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

依赖注入陷阱 的相关文章

  • Asp.Net Core 中的 SSL 不起作用

    我从 Visual Studio 创建了一个简单的 Web 应用程序Web Application Net Core 具有个人用户帐户授权的模板 然后 我启用了 SSLProject gt MyProject Properties 将带有
  • 由 UpdatePanel 内的 GridView 内的 LinkBut​​ton 触发的完整回发

    我在 UpdatePanel 中有一个 GridView 模板字段中有一个用于标记项目的按钮 从功能上讲 这工作得很好 但该按钮总是触发整页回发而不是部分回发 如何获得触发部分回发的按钮
  • 将 VS2015 中的 ASP.NET Identity 中的 User Id 类型更改为 int

    默认情况下 VS 2015 中的 ASP NET Identity 使用字符串作为 AspNet 表的主键 我想使用 int 类型的 id 来代替 经过一些研究后发现 框架开箱即用地支持不同类型的 ID 在下面的答案中 我将展示要实现这一目
  • AJAX控制工具包加载所有脚本

    我有一个奇怪的问题 我似乎无法解决 我正在使用 AJAX 控制工具包日历延长器在我的一些页面上 尽管我通过网络找到了信息 但我似乎无法让它与常规程序一起工作ScriptManager控制 它only与一个ToolkitScriptManag
  • 如何以require格式打印页面的gridview

    我有一个来自数据库的 gridview 问题是当用户单击打印按钮时 我想打印整个页面 gridview 的每一行以给定格式打印为 1 A4 尺寸页面上的 3 行 gridview Printing format 如果你想使用 javascr
  • 如何在任何给定时刻找到我的网站 (IIS 7/asp.net) 的访问者/用户数量?

    我需要显示有多少用户正在浏览我的网站 该网站运行在iis7上 我们使用的是asp net 3 5 活跃会话的数量是一个好的方法吗 该数字不需要非常准确 不需要历史记录 我只想知道现在有多少用户 在线 并将其显示在页面本身上 您可以为此使用
  • asp.net net.mail - 在调试模式下将所有电子邮件路由到不同的电子邮件地址

    无论如何 有没有办法让所有电子邮件发送到不同的地址System Web HttpContext Current IsDebuggingEnabled是真的 或者我是否需要一个新的类来用于到处发送电子邮件 我会设置一个 SMTP 服务器 并让
  • 在 ASP.NET Core 中,有没有办法从 Program.cs 设置中间件?

    我正在为 ASP NET Core 网站构建一个支持库 我有一些需要启用的中间件 并且由于它们的作用 需要在任何其他中间件之前添加它们 我可以在 IWebHostBuilder 上创建一个扩展方法来添加服务 同样用于配置日志记录 但我没有看
  • 如何在联系我们页面中使用用户电子邮件发送电子邮件?

    我正在创建一个联系我们页面 并且我想从该页面接收邮件 因为它的邮件来自用户邮件 我写了这段代码 var client new SmtpClient smtp gmail com 587 Credentials new NetworkCred
  • 自定义可视化 Web 部件属性 sharepoint

    我在 Visual Studio 2012 中创建可视 Web 部件属性时遇到问题 我被提及http msdn microsoft com en us library ee231551 aspx http msdn microsoft co
  • 实体框架 - 循环更新属性

    我正在尝试找到一种方法来循环 EF 对象的属性并更新这些属性的值 更具体地说 我有 50 个字段 其中最多填充 50 个下拉列表 所有 50 个可能都需要填充 也可能不需要填充 为了解决这个问题 我有一个中继器 最多可以创建 50 个 DD
  • 如何在 inversify 中注入异步依赖?

    我有 TypeScript 应用程序并且正在使用反转 http inversify io 对于国际奥委会 我有一个连接类 use strict import injectable from inversify import createCo
  • Visual Studio 2012 - 数据库发布向导已停止?

    我正在使用 VS 2012 和 SQL Server 2008 刚刚注意到服务器资源管理器中缺少 发布到提供商 选项 据此 数据库发布向导已停止使用 http forums asp net post 5122271 aspx http fo
  • 依赖注入的惰性解析

    我有 net 课程 我使用 Unity 作为 IOC 来解决我们的依赖关系 它尝试在开始时加载所有依赖项 Unity中有没有一种方法 设置 允许在运行时加载依赖项 还有更好的解决方案 Unity 2 0 中对 Lazy 和 IEnumera
  • ASP.NET - Google Chrome 缓存 DropDownList 选择

    我的购物车页面上的 Google Chrome 和 Safari 似乎遇到了缓存问题 购物车中有 2 个下拉列表 当您在更改下拉列表中的值后点击结帐按钮时 它会将列表中选择的内容提交到数据库 解释意外的行为有点困难 所以我会尝试一步一步地写
  • 有人用过 ServiceLoader 和 Guice 一起使用吗?

    我一直想通过我们的应用程序 构建系统进行更大规模的尝试 但更高的优先级不断将其推到次要地位 这似乎是加载 Guice 模块的好方法 并且避免了关于 硬编码配置 的常见抱怨 单个配置属性很少会自行更改 但您几乎总是会有一组配置文件 通常用于不
  • MVC和依赖注入,被迫使用单例Controller?

    我正在致力于构建一个根据 MVC 原则运行并利用依赖注入的 PHP 框架 我想我已经把前端控制器部分放下了 有一个工作路由器实例化控制器实例并根据请求的 URI 调用适当的操作 接下来是依赖注入 我想实现一个使用反射解决依赖关系的容器 这样
  • ASP.NET Core 与现有的 IoC 容器和环境?

    我想运行ASP NET 核心网络堆栈以及MVC在已托管现有应用程序的 Windows 服务环境中 以便为其提供前端 该应用程序使用 Autofac 来处理 DI 问题 这很好 因为它已经有一个扩展Microsoft Extensions D
  • asp.net网格分页的SQL查询

    我在用iBatis and SQLServer 使用偏移量和限制进行分页查询的最佳方法是什么 也许我添加该列ROW NUMBER OVER ORDER BY Id AS RowNum 但这只会阻止简单查询的数据访问 在某些情况下 我使用选择
  • 在 IIS URL 重写模块中自定义 HTTP 标头

    我被一个简单的出站规则困住了 我想修改HTTP内容类型 to 应用程序 原子 xml 如果 URL 完全匹配http wayneye com Feeds Atom http wayneye com Feeds Atom 我的规则 XML

随机推荐

  • 保存 JSON 文件以便稍后从中获取其他数据

    我希望能够使用新数据保存我的 json 文件 然后调用该数据 以便我可以再次保存新数据 现在它所做的就是 当我调用 JSON 文件数据的任何部分时 保持与我上次手动保存它时相同 我确实编辑了一些代码并更好地描述了我的问题 提前谢谢您 这是我
  • iframe 中的位置固定 div 不起作用

    我正在开发 facebook iframe 应用程序 我在此应用程序中有一个弹出消息框 那个弹出窗口有固定位置 但它不能像添加到没有滚动的 iframe 中那样工作 如果弹出窗口在没有滚动的 iframe 中 是否可以使其固定在位置 如果弹
  • 在 Rails 中使用回形针进行 ajax 上传的简单方法?

    我想知道是否有一个简单的方法 例如一个插件 用回形针在 Rails 中进行 ajax 上传 还是我必须从头开始构建它 Cheers 编辑 另外 我正在寻找非闪存解决方案 你可以试试remotipart http os alfajango c
  • Rails中有类似批量更新的东西吗?

    在Java中 我们有像下面的java代码这样的批处理执行 Statement statement null statement connection createStatement statement addBatch update peo
  • terraform 创建的 Kubenet AKS 未将路由表链接到应用程序网关子网?

    按照这个kubenet 将路由表关联到 appgw 子网 https github com Azure application gateway kubernetes ingress pull 723 当您为应用程序网关创建 AGIC 时 它
  • C# 中的字符串替换[重复]

    这个问题在这里已经有答案了 可能的重复 字符串替换不起作用 https stackoverflow com questions 1558024 string replace not working 我有一个像这样的字符串 string ur
  • Django admin在同一行显示多个字段

    我创建了一个模型 它将自动显示模型中的所有字段并将其显示在管理页面上 现在 我有一个问题 我希望在同一行上有两个字段 为此我必须在 ModelAdmin 中指定字段集 fieldsets None fields firstname last
  • MongoDb 聚合中的条件展开?

    我试图弄清楚是否有一种方法可以在 MongoDB 的聚合框架中编写条件展开代码 我有一个这样的聚合命令 models Users aggregate SELECT project sex 1 salesIndex 1 WHERE match
  • 错误:当前项目不支持运行配置应用程序。无法获取应用ID

    每次我在 Android Studio 中打开项目时 都会出现此错误 Error Run configuration app is not supported in the current project Cannot obtain the
  • R 中的 GSL 库 - 未找到符号

    作为新用户 我对 C 的了解非常有限 我有一些用 C 编写的代码需要在 R 中使用 我尝试使用 gsl integration 库 由于代码需要传递给可能未安装 GSL 库的不同人员 因此我创建了 integration h 文件 其中包含
  • php如何在curl获取请求标头中使用承载令牌?

    下面是一个有效的 C get 请求 public HttpResponseMessage ExecuteEndPoint string endpoint string accessTocken HttpResponseMessage res
  • 创建线程-传递参数

    我正在尝试创建多个线程 每个线程计算素数 我正在尝试使用线程创建将第二个参数传递给函数 它不断抛出错误 void compute prime void arg void arg2 这是我的 main 和创建线程 max prime 之后的
  • 禁用 c++ 模块时使用“@import”,请考虑使用 -fmodules 和 -fcxx-modules

    当我尝试使用 Cocoapods 将 AdMob 集成到 Objective C 项目中时 我就想到了这个问题 禁用 c 模块时使用 import 请考虑使用 fmodules 和 fcxx modules 这是什么错误以及如何修复它 Fi
  • 想要创建一个过滤器来检查 cookie,然后保存来自控制器的对象和引用

    我想创建一个过滤器 它将在我的任何 spring mvc 控制器操作之前执行 我想检查 cookie 是否存在 然后将对象存储在某处current仅请求 然后 我需要从我的控制器操作中引用该对象 如果存在 关于如何执行此操作的建议 要创建过
  • 在python中使用tesseract 3.02的C API与ctypes和cv2

    我正在尝试在 python 中将 Tesseract 3 02 与 ctypes 和 cv2 一起使用 Tesseract 提供了一组公开的 DLL C 风格 API 其中之一如下 TESS API void TESS CALL TessB
  • 你什么时候使用过 C++ 'mutable' 关键字? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 你什么时候用过C mutable关键词 为什么 我认为我从来没有使用过这个关键字 我知道它用于缓存 或者可能是记忆 等用途 但是您需要在什么
  • 无法远程连接到Python Socket

    我已经使用 python 套接字和 Tkinter 创建了一个聊天应用程序 它在本地运行得很好 但是客户端无法远程连接到服务器 当我输入我的公共 IP 地址作为主机时 我已经完全端口转发了我的网络并且我知道如何很好地进行端口转发 当我运行在
  • 如何在 selectizeInput 加载所有选择之前添加微调器? [闪亮的]

    我想制作一个应用程序 2actionButtons 1 在加载之前提交更改selectizeInput2 绘制绘图 我知道如何添加spinner单击后actionButton但大多数情况是当你想展示情节时添加的 但是 是否可以添加一个spi
  • singleton bean如何处理动态索引

    我正在使用 Spring Data Elastic Search 根据请求中的不同标头 我创建 RequestScope 对象 IndexConfig 来保存不同的索引集 似乎正在发挥作用 但我不明白单例bean DocumentA Doc
  • 依赖注入陷阱

    有人在 www 上有一个链接列表来获取 DI 陷阱的好列表吗 我一直在尝试在 asp net webforms 应用程序中使用 DI 注入控件 发现在递归构建时 ViewState 会丢失 开发人员在应用程序中实施 IoC DI 之前需要注