问题标签 [inversion-of-control]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
inversion-of-control - Windsor Container:如何指定一个公共属性不应该被容器填充?
在实例化一个类时,Windsor 默认将类的所有公共属性视为可选依赖项并尝试满足它们。就我而言,这会创建一个相当复杂的循环依赖,导致我的应用程序挂起。
我如何明确告诉温莎城堡它不应该试图满足公共财产的要求?我认为一定有那个程度的属性。但是我找不到它,所以请让我知道适当的命名空间/程序集。
如果有任何方法可以在没有属性(例如 Xml 配置或通过代码配置)的情况下执行此操作,那将是更可取的,因为发生这种情况的特定库迄今为止不需要依赖于 castle。
.net - 温莎集装箱和内部属性
是否有任何解决方案如何初始化标记为“内部”的组件的属性?我应该为 InternalsVisibleTo 属性使用什么程序集名称,否则它不会有帮助?
.net - Castle Windsor:如何将组件连接到工厂属性而不是方法
我有以下组件
其中时间跨度应由属性 ISettings.MyTimerFrequency 提供。
如何在 Windsor 容器 xml 中连接它?我以为我可以做这样的事情:
但我收到一个错误,因为当工厂设施需要一个方法时,MyTimerFrequency 是一个属性。
这里有一个简单的解决方案吗?我是以错误的方式处理整个事情吗?
编辑:肯定有解决方案,请参阅下面的答案。
c# - 在 Castle Windsor 组件注册的上下文中,什么是“ForwardedTypes”?
正如题主所说,真的!他们在做什么?
c# - 当还有专门的服务类型时,使用 Castle Windsor 的流畅接口在装饰器链中注册组件?
我正在尝试为基于 IRepository 的数据访问实现装饰器链。我有一个进行数据访问的存储库(目前只是内存列表){1},我有一个进行验证的存储库 {2}。最重要的是,我有一个专门的存储库 IUsersRepository {3},它在基本接口上定义了另一个方法。我正在运行最新的主干修订版 5376。
我希望能够使用流利的接口注册我的组件 - 是否可以通过 XML 指定用作 innerRepo 的服务键?如果是这样,怎么做?(有关 XML 配置示例,请参阅Bitter Coder Decorator 教程)。我宁愿不需要依赖注册的顺序,除此之外。
我正在关注这篇博文。
如果我向容器询问 IRepository {4},我已经能够让装饰器链工作;我看到我的 ValidatingRepository 方法在我的数据访问之前被调用。但是,如果我向容器询问 IUserRepository (我得到一个 InvalidCastException - 我想这是预期的,但它可以解决吗?),我无法让它工作。
我想避免在我的服务中使用一个装饰存储库和一个专用方法存储库;这让我觉得很容易出错。目前,我的专门方法都与通过不同标准获取实体有关 - 我想我可以让我的 Get 方法采用分离标准 - 这将允许我在我的界面上只有一个,并消除对专门的接口。除了我不允许,因为我们还没有决定绝对使用 NHibernate。也许如果我让 IRepo.Get 接受委托或 IQueryable?有任何想法吗?我整个早上都在努力解决这个问题,如果我有狭隘的视野也不会感到惊讶,而且还有一种不同的、更好的方法;欢迎任何建议!
{1} - {4} 可以在utilitybase的复制/粘贴工具中看到。
.net - 有什么方法可以添加一些默认程序集来解析 Unity / ObjectBuilder 中的类型?
我正在使用 MS Unity IoC 框架进行我的第一个项目。
如果我的统一配置中有这个:
然后我得到错误:
无法从程序集“Microsoft.Practices.Unity.Configuration,Version=1.1.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”加载类型“PFServer.DataAccess.TestDataAccess”。
但是,如果我将程序集名称添加到类型定义中:
然后它工作正常。有没有办法添加一些默认的程序集来加载类型?在这种情况下,奇怪的是“PFServer.dll”是包含所有这些配置的程序集。我觉得奇怪的是当前程序集不在解析对象的路径中......或者我只是做错了什么?
sql-server-2005 - StructureMap 和 SqlCacheDependency
我正在尝试通过我的 StructureMap IoC 启用 SqlCacheDependency,我正在使用 LinqToSql 我已经完成了处理 Linq 缓存的代码,但不太确定如何设置 SqlCacheDependency,因为它需要将它放在全局中。文件
但是,我的存储库不使用 global.asa,因为它只是一个库 (.dll) 而不是 Web 应用程序。
任何想法如何做到这一点?也许将 application_start 方法中的内容放入我的存储库的构造函数中?
apache-flex - 弹性普拉纳
我想知道你们中有多少人已经使用过用于 AS3(Flex/Flash)的 Prana 框架或听说过它?
我发现它非常有用,但似乎没有很多开发人员使用它......
谢谢,Lieven Cardoen 又名 Johlero
.net - .NET:使用配置文件选择具体类
(这个问题专门在 C# 中,但一般适用于 .NET)
我有一个大型应用程序,它的设计相当不错,并且通过接口分为主要部分(这样做是为了帮助并行开发)。
我们现在有一组主要的具体类来实现所需的接口,但我们也有额外的具体类集用于替代情况和测试。
目前,我们将所有这些类放在代码的顶层:
如果我想换出组件,那么我只需要更改该行并重新编译:
这很好用,但显然需要重新编译——我宁愿使用配置文件中的值选择具体类。
使用配置文件更改具体类的标准模式是什么?有没有我可以使用的标准库来为我解决这个问题?
谢谢!
asp.net-mvc - ASP.NET MVC Beta 1:DefaultModelBinder 在不相关的请求之间错误地保留参数和验证状态
当我使用默认模型绑定将表单参数绑定到作为操作参数的复杂对象时,框架会记住传递给第一个请求的值,这意味着对该操作的任何后续请求都会获得与第一个请求相同的数据。参数值和验证状态在不相关的 Web 请求之间保持不变。
这是我的控制器代码(service
代表对应用程序后端的访问):
我的 .aspx 视图(强类型为ViewPage<RunTime
>)包含如下指令:
这使用了DefaultModelBinder
该类,该类旨在自动绑定我的模型的 properties。
我点击页面,输入有效数据(例如时间 = 1)。该应用程序正确保存了时间 = 1 的新对象。然后我再次点击它,输入不同的有效数据(例如时间 = 2)。但是,保存的数据是原始数据(例如时间 = 1)。这也会影响验证,所以如果我的原始数据无效,那么我以后输入的所有数据都被认为是无效的。重新启动 IIS 或重建我的代码会刷新持久状态。
我可以通过编写自己的硬编码模型绑定器来解决这个问题,下面显示了一个基本的简单示例。
我错过了什么吗?我不认为这是浏览器会话问题,因为如果在一个浏览器中输入第一个数据而在另一个浏览器中输入第二个数据,我可以重现该问题。