问题标签 [spring4d]
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.
delphi - Spring4d - ObjectDataset 刷新没有从底层 IObjectList 获取记录
我将 Spring4dTObjectDataset
与IObjectList
从TListBase<TObject>
. 我使用这个 SOA作为基础,尽管它使用 aTObjectList
而我使用TCollection
.
我将该TObjectDataset.Datalist
属性设置为此适配器的一个新实例。但是,如果我将条目直接添加到底层 TCollection中,然后点击TObjectDataset.Refresh
,似乎TObjectDataset
不会查询底层TCollection
的新记录(它不会查询GetCount
过程)。但是,如果我这样做,TObjectDataset.Close
则会TObjectDataset.Open
显示新记录。
是否有TObjectDataset
刷新条目的机制?
我想在我的自定义类上实现INotifyCollectionChanged<T>
接口。TCollection
适配器将IObjectList
订阅更改通知,更新自身。但也许有一种内置的方法可以做到这一点?
delphi - Spring4d 和 TWebBroker
(同样的问题存在于 Spring4d google group)
我有一个很大的疑问(这不仅仅是一个疑问,我有一些与线程相关的麻烦......):我正在使用 Delphi WebBroker 技术开发一个 Web 应用程序;Spring4D Container 的注册信息应该放在哪里?
- 在主应用程序核心?(我不知道它是否对 web 服务器有好处,比如 apache、IIS)
- 在 webmodule 的 OnCreate 中?(我已经在这里完成了我的工作,但我不知道这是不是一个好的做法。TContainer实例是webbroker的一个字段)
- 有什么建议吗?最后但同样重要的是:我在哪里销毁容器?现在我在 TWebModule 的 OnDestroy 中销毁它。
在此先感谢您的帮助。
涡流
这是 TWebModule 的一些代码: ... ...
delphi - 验证依赖注入容器构建
当我使用依赖注入容器(Spring4D)构建应用程序时,我想知道容器是否正确构建。在这个情况下:
如果 TMyForm 从 Vcl.Forms.TForm 继承,则容器将建立,但应用程序将无法工作,因为实际上 TMyForm 根本没有注册。我想知道是否有可能验证构建过程。特别是解析器会解析我认为应该的构造函数,而不是默认的构造函数吗?
我尝试过这样的事情:
但这远非理想。
delphi - DI 容器无法解析 FMX 控件
我有以下项目:
MyForm 单元(只是空表):
应用单元:
并构建代码:
运行 BuildProject() 导致错误:“无法解析类型:TMyForm”。我在 VCL 平台上测试了相同的配置,一切正常。你知道这里有什么问题吗?
Edit1:我不得不更改问题描述,因为我错误地认为问题发生在两个(VCL 和 FMX)平台上。@RudyVelthuis 的评论告诉我,问题只出在 FMX 平台上。
dependency-injection - 如何委托 Container1.Resolve到 Container2.Resolve,如果 Container1 无法解析 T?
使用 Spring4D,我想构建一个容器,将服务解析委托给另一个容器,如果它无法解析服务 - 类似于以下内容:
这可能吗?
delphi - Spring4d:Spring.Collections.IEnumerator 和 System.IEnumerator
我有一个问题应该是微不足道的,但我找不到任何优雅的答案。
我有一个 a 的实例,IList<string>
我想得到一个逗号分隔的所有不同(不区分大小写)值的字符串。
我以为我会为此使用string.Join
helper,因为它有一个很好的重载,可以接受IEnumerator<string>
as 参数。不幸的是,我发现遇到了一个障碍:spring4d 重新定义IEnumerator<T>
了,当然,在任何地方都使用它自己的类型。
结果是以下代码无法编译:
分配distinct
失败E2010 Incompatible types: 'System.IEnumerator<System.string>' and 'Spring.Collections.Extensions.TDistinctIterator<System.string>'
或者,如果我从 distinct 中删除命名空间,则调用string.Join
失败。
知道我应该怎么做吗?缺少手动遍历迭代并手动执行连接?
delphi - 如何在 Spring4D 1.2 中更新数据库模式
我正在试验 Spring4D 1.2 的简单 ORM (Marshmallow)。我可以让它工作得很好,但我不知道如何让它用新的模式更新现有的数据库。
例如,在“GettingStarted”项目中,我向数据模型添加了一个属性:
无论如何,如果数据库已经存在,我无法让框架更新架构。
我错过了什么?我必须在框架之外手动执行吗?
delphi - Spring4d 基于接口的集合生命周期
spring4d 中基于接口的集合如何处理其元素的生命周期?我想要实现的是,当集合超出范围时,包含的对象也被释放,并调用它们的析构函数。目前不确定情况是否如此。
delphi - Delphi SysUtils.Supports 意外返回 true
我正在根据 Spring4d 的文档示例制作一个 eventPublisher
不同之处在于订阅者必须显式订阅事件。
IEventHandler<TEventType>
我想根据他们是否实现接口来触发他们的 Handle 过程。
发布传入事件时,我IEventHandler<TEventType>
使用事件的类名和 Spring4d 找到类型引用TType.FindType('IEventHandler<TEvent1>')
然后我遍历我的订阅者(实现 IEventHandler 接口的对象)并检查它是否支持 IEventHandler 类型。
问题是即使订阅者没有实现接口,Supports 方法也会返回 true。
另外,我尝试列出sayTMyEventHandler2
类型的接口。它包含IEventHandler<TEvent2>
??
我相信这是由于IEventHandler<TEvent2>
和IEventHandler<TEvent1>
共享相同 GUID的限制
有解决方法吗?
使用这些类和接口: