问题标签 [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 回答
1157 浏览

delphi - Parent 属性的构造函数注入与 setter 注入

我试图找出对一些遗留代码使用依赖注入的最佳方法,这将需要很长时间来重构并且必须逐步完成。大多数旧类使用“父”属性来确定各种事物,并且父属性通常通过构造函数参数传入,如下所示:

这是我们遗留代码库的典型特征。但是,当转向接口和构造函数注入时,Spring4D 框架在创建 Child 对象时不知道 Parent。所以它只会得到一个新的父母,而不是现有的父母。当然,我可以创建一个属性 getter/setter,但这将表明该类的“可选”属性实际上是一个强制属性。有关更多说明,请参见下面的代码:

也许有一些我不知道的方法可以用来使用 DI 框架设置父对象?

我希望这个问题很清楚我想要达到的目标。我很乐意在必要时提供更多描述/代码示例。

0 投票
4 回答
1376 浏览

list - 如何从列表中删除所有重复项?

考虑这个测试应用程序:

如何实现该RemoveDuplicates功能(nub在 Haskell 中调用)?

0 投票
2 回答
142 浏览

delphi - Delphi分布式构建失败

我创建了一个小项目 [0] 来在受控环境中重现错误。事实是,我正在使用 jenkins 构建我的项目,一个很大的项目,我想做一些并行构建。让我以图形方式进行

这是我在 [0] 上创建的组织,我在 spring 容器上注册了一个类TMyUnit ( MyBasicPackage ) 以进行测试。我构建它并生成它的 .dcu、.bpl 等。第二阶段我构建了需要MyBasicPackage的MyPackageTester。最后,我构建了需要MyPackageTester的应用程序。到现在为止还挺好。

当我尝试在PC-00上构建MyBasicPackage时,获取工件并尝试在PC-06上构建MyPackageTester(相同的架构、相同的操作系统、相同的 IDE、相同的 spring4d 版本),然后出现了一个很好的错误:

所以,我在两台机器( PC-00PC-06 )上更新我的 spring4d并构建它们。运行...并出现同样的错误。检查库路径选项(C:\Program Files (x86)\Embarcadero\Studio\14.0\Componentes\spring4d\Library\DelphiXE6\Win32\Debug),删除 dcu 文件并在两台机器上再次构建它们,同样的错误。将 dcu 文件从PC-00复制到PC-06以避免任何类型的系统配置并出现相同的错误。

可能我正在尝试做一些迄今为止不可能的事情。我用谷歌搜索了几天没有运气。

有任何想法吗?

请随时 fork 或 pull request 示例;)

问候

[0] https://github.com/graguirre/DelphiDepencyExample

0 投票
1 回答
1594 浏览

delphi - 如何安装 Spring4D

我已经下载了 Delphi Spring Framework 的最新版本。按照自述文件中的指示,我运行 Build.exe 并选择了我的两个版本的 Delphi(XE5 和西雅图)。在 Delphi 安装中,我都看不到已安装软件包或修改了我的库搜索路径。我缺少什么或者我必须做些什么来安装和使用它?

在此先感谢您的帮助。

0 投票
1 回答
445 浏览

delphi - Spring4d 事件驱动架构或如何检索给定接口的所有实例

我检查了 Spring4d 库中有关事件驱动架构的示例。

据我了解,当一个事件发布时,ServiceLocator将实例化所有实现该IEventHandler<TEventClass>接口的类并要求这些处理程序处理该事件。

但是,是否有推荐的方法只要求已经实例化的服务来处理事件。

假设我有任意数量的Controllers实例化。其中一些可能是多次实例化的同一个类。其中一些可能是独一无二的。

我希望这些实例化Controllers来监听TUserAdded事件。这些Controllers实现了IEventHandler<TUserAdded>接口。我不希望未实例化Controllers的人收听该事件。

在某种程度上,我想获取实现该IEventHandler<TUserAdded>事件的所有实例的列表。

此外,在理想情况下,如果 aController注册为Singleton

我想实例化TMySingletonController如果它还没有实例化,那么,让它处理事件。

Spring4d 中是否有内置方法来获取给定接口的所有实例的列表?

0 投票
0 回答
408 浏览

delphi - 弹簧持久性的模型生成器

有谁知道棉花糖(弹簧持久性)是否有现有的模型生成器。手动编写所有类和外键等并不是那么方便。

先感谢您。

以便生成器为数据库中的表生成 pas 文件。

0 投票
1 回答
1336 浏览

delphi - Delphi,如何避免application.CreateForm?

我正在使用Spring4d 框架 进行依赖注入和其他事情。

在应用程序入口点,我必须创建应用程序“主”表单。虽然,我不知道除了

创建这个。

是否可以使用 Spring4d 依赖注入创建主窗体?像这样:

然后将其设置为打开应用程序时将显示的表单?

0 投票
1 回答
444 浏览

delphi - Spring4d:如何“强制”容器相信一个类实现了一个接口

我正在使用 RemObjects DataAbstract 和 Spring4d。RemObjects 生成一个SchemaServer_Intf.pas文件,该文件包含其模式中存在的每种表的接口。它允许“强类型”数据集,允许使用

这是 DataAbstract 生成的接口之一的快照

不过,有一个问题。如果您像这样投射数据表:

您将收到“不支持接口错误

但是,一旦你这样做:

你可以放心地写

而且您不会收到任何错误。

所以,对于 Spring4d,我想在我的注册单元中写这个:

但是,Spring4d 抛出(有原因)错误:

有没有办法覆盖这个检查?

0 投票
2 回答
1317 浏览

delphi - Spring4d:具有所有者的自动工厂:TComponent 参数?

使用Spring4d,您可以像这样注册自定义工厂

以这种方式,我相信对于继承自的每个依赖项,TComponent想要传递所有者的人要么

或者一个也可以做

虽然,这很容易出错/添加代码只是为了传递所有者。是否有一种内置方法可以获取将 TComponent 作为参数的工厂,而无需事先在容器中注册它?

因为我经常会使用

不注册TFunc<TMyDep>依赖项,而只注册TMyDep类型。

有可能通过类似的东西

无需在容器中注册?

0 投票
1 回答
602 浏览

delphi - Delphi:相同类型的不同PTypeInfo

我对 Delphi 中的 PTypeInfo(以及一般的 TypeInfo)有点困惑——确切地说是 Delphi 10 Seattle。

我遇到了以下问题:

我们有一个 ORM 框架(基于 Spring4D)。现在我想扩展它的映射能力:Nullable integer column to a Nullable field in model. 该列包含 NULL、0 或 1。映射函数很简单:

  • NULL->null (空的 Nullable)
  • 0->假
  • 1-> 真

但我相信我正在研究 ORM 并不重要。问题的核心是使用 TValue 传递值,并且在通过 RTTI 将最终值分配给对象的字段之前进行了一些强制转换操作。在那里我可以看到我能够轻松重现的问题:

映射引擎为字段提供 PTypeInfo 指针。例子:

在代码中的某处:

现在如果我写:

结果是假的。我的终极问题是为什么?我确信类型是平等的。'Nullable<System.Boolean>'他们都以它的名字返回。