问题标签 [fluent-interface]

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 投票
4 回答
2169 浏览

php - 方法链的影响

我知道在 PHP 中链接的好处,但可以说我们有以下情况

一遍又一遍地返回和重用对象是否有任何问题,例如速度或未能遵循最佳实践等问题

如果您是 Fluent-Interface 的新手,也可以好好阅读:Martin Fowler on Fluent-Interfaces

我完全理解它不必这种方式编程,并且可以像这样处理:

但可以说我有一个像这样的对象:

请注意->With(38,'HPK')->Skippable(),这是此类编程的 Pro 的完美示例

0 投票
2 回答
20178 浏览

c# - Castle Windsor:自动注册来自一个程序集的类型,这些类型实现了另一个程序集的接口

我使用Castle Windsor作为我的IoC 容器。我有一个结构类似于以下的应用程序:

  • MyApp.Services.dll
    • IEmployeeService
    • IContractHoursService
    • ...
  • MyApp.ServicesImpl.dll
    • EmployeeService : MyApp.Services.IEmployeeService
    • ContractHoursService : MyApp.Services.IContractHoursService
    • ...

我目前使用XML 配置,每次添加新的 IService/Service 对时,都必须在 XML 配置文件中添加一个新组件。我想将所有这些都切换到流利的注册 API,但还没有找到完全正确的方法来做我想做的事。

任何人都可以帮忙吗?生活方式都将是singleton

提前谢谢了。

0 投票
1 回答
2011 浏览

entity-framework - 如何使用 EF4 fluent API 将删除级联到链接表中?

我在现有(MSSQL 2008 R2)数据库中有两个表,它们通过链接表相关联。

这两个表是“计划”和“提示”。链接表是“PlanTipLinks”。

计划可以有许多提示,提示可以与多个计划相关联(即它是多对多关系)。在应用程序中,我只关心“Plan.Tips”关系。我不需要 Tip.Plans 反向关系。

链接表中的外键引用不能为空。

我正在使用以下流畅的 API 代码来映射这种关系:

这将在表中创建正确的条目。问题是,当我删除计划时,PlanTipLinks 表上出现外键异常。

大概我需要告诉它在删除计划时将其级联到 PlanTipLinks 表中,但我不知道该怎么做。我似乎无法使用 HasMany/WithMany 方法调用 WillCascadeOnDelete 方法。

我在这里想念什么?

0 投票
4 回答
2552 浏览

c# - 在方法名称末尾包含介词是否遵循或减损了正常的 C# API 设计?

我知道这听起来像是一个主观的答案,但我会尽量使问题尽可能客观,因为对这个问题的客观答案将是最有帮助的。

我最近有一位代码审查员指出我有在方法末尾包含介词的习惯。这是我最近编写的一个方法,作为该类的扩展方法Point

我的代码审查员提到该方法应该point.Distance(rectangle). 我一直认为这是主观的和风格的问题。但是,我注意到更多的 .NET API 设计朝着这个方向发展。例如,使用 NUnit 的 Fluent Interface,您可以:

我在 Linq 上也看到了这一点:

.NET 和/或第三方 API 设计人员在方法末尾使用介词是否有任何固定或一致的方式?还是只是风格和主观问题?.NET 框架中的 API 设计本身是否随着此策略而发展,还是一直存在?

0 投票
8 回答
412 浏览

language-agnostic - 将链接发挥到极致的语言?

所以,我只是在想链接有多酷,以及它如何让事情更容易阅读。对于许多语言,当将一堆函数应用于变量时,您会编写如下内容:

而且您必须从右到左或从最内到最外阅读它。你f先申请,然后g,以此类推。但如果它被锁住,它看起来更像

你可以像普通人一样阅读它。所以,我的问题是,一定有一些语言可以这样做,它们是什么?这些花哨的函数式编程语言就是这样做的吗?


正因为如此,我通常最终会创建一大堆临时变量,以便我可以将其拆分为单独的行并使其更具可读性:

我的神奇语言在哪里,如果它们变得太长,你仍然可以将它分成不同的行,而不需要干预变量:

0 投票
3 回答
7646 浏览

entity-framework - 将属性映射到实体框架 CTP5 中的(不同名称的)外键字段

我正在尝试使用实体框架 CTP5 Fluent API 来映射现有数据库。我有以下课程:

相应的表称为“Stores”和“Sales”。Sales 有一个 StoreId 外键,它指向 Stores 表中的 Id 字段。

我正在努力将 Sale.Shop.Id 映射到表中的 StoreId。我不能随意将其更改为 ShopId,因此需要对其进行映射。

在 CTP4 中,我使用的是:

我尝试了以下方法:

但是,这似乎只适用于原始类型。

如何指定此映射?

0 投票
6 回答
695 浏览

flash - OOP 问题:扩展类、覆盖函数和类似 jQuery 的语法

我有一个与 Flash、actionscript 3 相关的 OOP 问题。这是一个个人项目,我正在寻找这个问题的设计模式或解决方法,我的目标是学习新事物。

我创建了一个名为 Chain 的类。我创建了这个 util-class 来简化延迟函数调用。您可以通过添加以毫秒为单位的延迟来创建一系列函数。这条链可以多次执行,甚至可以以相反的顺序执行。此类具有返回自身的函数。这使得拥有像这样的 jQuery 风格的语法成为可能:

对于这个例子,我留下了很多函数只是为了演示这个问题。Chain 类主要用于添加功能和启动/停止链。

现在,我还有一个名为 ChainTween 的类。我正在尝试拆分事物以使 Chain 具有一些核心功能,并让 ChainTween 做一些动画技巧。我有创建一个基于 Chain 类的小补间引擎的想法。目前它扩展了Chain。它使用了 Chain 类中的许多受保护变量,并覆盖了 Chain 的一些核心函数,以在 Chain 进程中添加补间函数。

现在这就是问题所在:我想保留链接语法,但是 wait() 返回一个 Chain 实例并且 Chain 没有动画函数。

我试图覆盖 ChainTween 类中的 wait() 和 add() 函数,但这会导致不兼容的覆盖。

我可以将chain.wait(100) 转换为ChainTween,但是当我链接很多它们时,这非常难看并且没有用。现在我不想将任何 ChainTween 函数添加到 Chain(也没有虚拟函数),并且我想保持所有函数的完成,因此返回 Object 也不是一个选项。我尝试使用接口,但这会产生同样的问题,因为接口的功能应该在实现它的类中实现。

现在我考虑在 ChainTween 中创建一个 Chain 的实例,但这不允许我覆盖函数,然后我应该将许多属性设为 public 而不是 protected,这也不是首选。

这可能吗?有人对此有很好的解决方案吗?

0 投票
1 回答
415 浏览

entity-framework-4 - EntityFramework FluentAPI 映射问题

我有以下代码:

问题在于这个映射 modelBuilder.Entity().HasRequired(p => p.Pointer_EntityDef2) .WithMany() .IsIndependent() .Map(m => m.MapKey(p => p.pID, "Pointer_EntityDef2") );

db 不遵守 de 约定,FK 不是 Pointer_EntityDef2pId 是否有可能在我的类中只有 1 个属性(EntityDef2 类型的 Pointer_EntityDef2)而不是 1 个属性用于 id 和一个用于对象(这个工作正常),以及具有 FK 名称的属性?映射应该是什么样子?

0 投票
1 回答
4871 浏览

foreign-keys - EF FluentAPI 0..1 到 * 映射

如何在 EF 4.0 FluentAPI CTP5 中将 0..1 映射到 * 关系?我不断收到此错误

因为从属角色中的所有属性都不可为空,所以主体角色的多重性必须为“1”。

而且我不知道如何修复它..

我的代码看起来像这样

对于映射,代码如下所示

也有可能只有

代替

在数据库中,FKfield 被命名为“Parent”而不是“ParentpID”。在这种情况下,映射应该如何?

0 投票
3 回答
412 浏览

c# - 向流畅的界面构建器添加分叉

我有一个小框架,可以让我创建一个管道和过滤器系统。我有使用流畅的接口来构建管道和过滤器系统的想法:

显示的代码按预期工作。这是系统的“图片”:

现在,有一种过滤器,它不是一个输出,而是两个。我称之为bifurcation。下面是一个带有 的系统示例bifurcation

我想实现这样的东西:

但似乎我无法做到这一点。这甚至可能吗?在第一个示例中,我只需要一个PipeFilterBuilder(由 返回PipeFilter.StartBuild())。在第二个示例中,我尝试创建其他类型的构建器来混合使用,但这似乎无济于事。

忘了提一下,我的想法是我可以在任何我想要的地方嵌套分叉,也就是说,我可以得到满是树枝的“树”!

任何人都可以对此有所帮助吗?