有人在 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(使用前将#替换为@)