问题标签 [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.

0 投票
1 回答
217 浏览

delphi - Spring4d - ObjectDataset 刷新没有从底层 IObjectList 获取记录

我将 Spring4dTObjectDatasetIObjectListTListBase<TObject>. 我使用这个 SOA作为基础,尽管它使用 aTObjectList而我使用TCollection.

我将该TObjectDataset.Datalist属性设置为此适配器的一个新实例。但是,如果我将条目直接添加到底层 TCollection中,然后点击TObjectDataset.Refresh,似乎TObjectDataset不会查询底层TCollection的新记录(它不会查询GetCount过程)。但是,如果我这样做,TObjectDataset.Close则会TObjectDataset.Open显示新记录。

是否有TObjectDataset刷新条目的机制?

我想在我的自定义类上实现INotifyCollectionChanged<T>接口。TCollection适配器将IObjectList订阅更改通知,更新自身。但也许有一种内置的方法可以做到这一点?

0 投票
0 回答
156 浏览

delphi - Spring4d 和 TWebBroker

(同样的问题存在于 Spring4d google group)

我有一个很大的疑问(这不仅仅是一个疑问,我有一些与线程相关的麻烦......):我正在使用 Delphi WebBroker 技术开发一个 Web 应用程序;Spring4D Container 的注册信息应该放在哪里?

  1. 在主应用程序核心?(我不知道它是否对 web 服务器有好处,比如 apache、IIS)
  2. 在 webmodule 的 OnCreate 中?(我已经在这里完成了我的工作,但我不知道这是不是一个好的做法。TContainer实例是webbroker的一个字段)
  3. 有什么建议吗?最后但同样重要的是:我在哪里销毁容器?现在我在 TWebModule 的 OnDestroy 中销毁它。

在此先感谢您的帮助。

涡流

这是 TWebModule 的一些代码: ... ...

0 投票
1 回答
164 浏览

delphi - 验证依赖注入容器构建

当我使用依赖注入容器(Spring4D)构建应用程序时,我想知道容器是否正确构建。在这个情况下:

如果 TMyForm 从 Vcl.Forms.TForm 继承,则容器将建立,但应用程序将无法工作,因为实际上 TMyForm 根本没有注册。我想知道是否有可能验证构建过程。特别是解析器会解析我认为应该的构造函数,而不是默认的构造函数吗?

我尝试过这样的事情:

但这远非理想。

0 投票
2 回答
297 浏览

delphi - DI 容器无法解析 FMX 控件

我有以下项目:

MyForm 单元(只是空表):

应用单元:

并构建代码:

运行 BuildProject() 导致错误:“无法解析类型:TMyForm”。我在 VCL 平台上测试了相同的配置,一切正常。你知道这里有什么问题吗?

Edit1:我不得不更改问题描述,因为我错误地认为问题发生在两个(VCL 和 FMX)平台上。@RudyVelthuis 的评论告诉我,问题只出在 FMX 平台上。

0 投票
1 回答
181 浏览

dependency-injection - 如何委托 Container1.Resolve到 Container2.Resolve,如果 Container1 无法解析 T?

使用 Spring4D,我想构建一个容器,将服务解析委托给另一个容器,如果它无法解析服务 - 类似于以下内容:

这可能吗?

0 投票
0 回答
87 浏览

delphi - Win 10 中的 Spring4D TObjectDataSet 阿拉伯语字符

我在一个项目中使用 Sprinfg4D TObjectDataSet,在 windows 7 中一切都很完美,但是当我将应用程序移动到 windows 10 时,带有阿拉伯字符的字段似乎无法正常工作,在 SqlSevrer DB 中,除了 UI,特别是阿拉伯字符即使在 DBGrid 中,甚至在 DevExpress Controls 中,也显示为 ???????。 在此处输入图像描述

SQL服务器 在此处输入图像描述

0 投票
1 回答
474 浏览

delphi - Spring4d:Spring.Collections.IEnumerator 和 System.IEnumerator

我有一个问题应该是微不足道的,但我找不到任何优雅的答案。

我有一个 a 的实例,IList<string>我想得到一个逗号分隔的所有不同(不区分大小写)值的字符串。

我以为我会为此使用string.Joinhelper,因为它有一个很好的重载,可以接受IEnumerator<string>as 参数。不幸的是,我发现遇到了一个障碍:spring4d 重新定义IEnumerator<T>了,当然,在任何地方都使用它自己的类型。

结果是以下代码无法编译:

分配distinct失败E2010 Incompatible types: 'System.IEnumerator<System.string>' and 'Spring.Collections.Extensions.TDistinctIterator<System.string>'

或者,如果我从 distinct 中删除命名空间,则调用string.Join失败。

知道我应该怎么做吗?缺少手动遍历迭代并手动执行连接?

0 投票
1 回答
227 浏览

delphi - 如何在 Spring4D 1.2 中更新数据库模式

我正在试验 Spring4D 1.2 的简单 ORM (Marshmallow)。我可以让它工作得很好,但我不知道如何让它用新的模式更新现有的数据库。

例如,在“GettingStarted”项目中,我向数据模型添加了一个属性:

无论如何,如果数据库已经存在,我无法让框架更新架构。

我错过了什么?我必须在框架之外手动执行吗?

0 投票
1 回答
244 浏览

delphi - Spring4d 基于接口的集合生命周期

spring4d 中基于接口的集合如何处理其元素的生命周期?我想要实现的是,当集合超出范围时,包含的对象也被释放,并调用它们的析构函数。目前不确定情况是否如此。

0 投票
1 回答
244 浏览

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的限制

有解决方法吗?

使用这些类和接口: