问题标签 [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.
api - F#:去流畅化 API 的最佳方式?
我正在扩展 Fluent NHibernate 以便更好地与 F# 一起使用(即报价支持),并希望得到一些关于去流化 API 的反馈。F# 要求使用返回值,除非它们是类型单位。所以这最终以“|> ignore”终止每一行:
我的第一反应是向基类添加更多方法,以便它们返回单位。例如,“IdI”和“MapI”:
但这需要在这里和那里进行特定的重载,并且长链仍然需要 |> Ignore。我还考虑过使用 Done 属性扩展对象:
你怎么看?
refactoring - 如何重构链式方法?
从此代码开始:
如何将其重构为:
需要执行哪些重构序列才能完成转换?
为什么?因为可能有数百个,我不想通过手动操作来引入错误。
你会说流畅接口的一个缺点是它们不容易被重构吗?
注意:我想自动执行此操作而无需手动输入代码。
c# - C#:为方法嵌套返回“this”?
我有一门课,我必须多次调用一两个方法。当前返回的方法void
。我在想,最好让它 return this
,以便方法可以嵌套?或者这被认为是非常非常非常糟糕?或者如果不好,如果它返回一个相同类型的新对象会更好吗?或者你怎么看?例如,我创建了三个版本的加法器类:
第一个可以这样使用:
其他两个可以这样使用:
唯一的区别是,a
在第一种情况下是new Adder()
后者,而在后一种情况下,它是最后一种方法的结果。
第一个我发现它很快就变得......一遍又一遍地写很烦人。所以我想使用其他版本之一。
第三种工作方式与许多其他方法类似,例如许多 String 方法和 IEnumerable 扩展方法。我想这有其积极的一面,你可以做类似的事情var a = new Adder(); var b = a.Add(5);
,然后一个是 0,一个是 5。但与此同时,一直创建新对象不是有点贵吗?第一个物体什么时候会死?第一种方法什么时候返回?或者?
无论如何,我喜欢返回this
并认为我会使用它的那个,但我很想知道其他人对此案的看法。什么被认为是最佳实践。
c# - 让无参数方法像 Func 一样工作
我正在尝试使我的代码的一部分更加流畅。
我有一个字符串扩展,它从字符串发出 HTTP 请求并将响应作为字符串返回。所以我可以做类似的事情......
我正在尝试编写一个扩展,它将继续尝试请求直到它成功。我的签名看起来像...
我打算称它为...
唉,这似乎不起作用=)。我试着先把它变成一个 lambda,但这似乎也不起作用。
有没有办法在保持语法相当流畅的同时做我想做的事情?建议非常感谢。
谢谢。
c# - 流畅的接口/扩展方法——将平面列表变成导航树
我目前有一个扩展方法,它将 Tab 类型的 IEnumerable 转换为 TabNode 的分层集合。
例如,以下将为您提供一组 TabNodes,它们位于 TabId 为 32 的父级以下 - 最大深度级别为 4。
这很令人困惑,并且对进一步细化不是很友好。如果我想指定某个级别而不是 ParentID,该怎么办?
我想做的是这样的:
我被困在如何优雅地做到这一点。你能帮助我吗?
这是我当前的函数,由我的扩展方法调用(基于我在www.scip.be上找到的一篇文章)。
c# - linq 中的“选择新”是否会触发评估/加载?
我目前正在尝试创建一个实现的类,IEnumerable<T>
以便从通过 ParentId 属性相互引用的对象的平面列表构造层次结构。我想为此编写一个流畅的界面,这样我就可以做这样的事情
所以,关于 yield 语句,我想知道我是否可以在课堂上做这样的事情NodeHierarchy : IEnumerable<TabNode>
:
或者我是否必须做这样的事情:
api - Castle Windsor Fluent 注册 - Pick() 做什么?
当使用城堡温莎的自动注册时,我看到人们在做类似的事情
对于我的一生,我无法弄清楚 Pick() 方法的作用,也找不到任何文档。谁能给我解释一下?
c# - Castle Windsor Fluent API:如何将组件参数值设置为配置的属性
我刚刚开始使用 Castle Windsor 的 Fluent 注册,并且无法弄清楚如何在注册时引用我在 XML 配置文件的属性部分中定义的属性。所以我有这个代码来注册一个组件。
#{ConnectionInfo.DefaultTimeout} 是我在 XML 配置中定义的属性,该属性在 Fluent 注册之前加载到容器中,但这不起作用,在此代码中,传递给 Eq() 的参数被视为文字(尽管这适用于其他组件,即 ${My.Component} 会起作用)
在通过新的 Fluent API 注册组件时如何从配置文件中引用属性有什么想法吗?
谢谢
apache-flex - Dealing with asynchronous control structures (Fluent Interface?)
The initialization code of our Flex application is doing a series of asynchronous calls to check user credentials, load external data, connecting to a JMS topic, etc. Depending on the context the application runs in, some of these calls are not executed or executed with different parameters.
Since all of these calls happen asynchronously, the code controlling them is hard to read, understand, maintain and test. For each call, we need to have some callback mechanism in which we decide what call to execute next.
I was wondering if anyone had experimented with wrapping these calls in executable units and having a Fluent Interface (FI) that would connect and control them.
From the top of my head, the code might look something like:
The AsyncChain would be an execution tree, build with the FI (and we could of course also build one without a FI).
This might be an interesting idea for environments that run in a single threaded model like the Flash Player, Silverlight, JavaFX?, ...
Before I dive into the code to try things out, I was hoping to get some feedback.
Update 19/03/2010: We have created an experimental Task API in the Spring ActionScript project that provides control over async processes. We'd be happy to get feedback. http://www.springactionscript.org/docs/reference/html/the_operation_api.html#tasks
.net - 找到正确的模式来加载具有不同图形的对象
我试图找出处理加载具有不同图形(相关实体)的对象的最佳方法,具体取决于它们所使用的上下文。
例如这是我的域对象的示例:
我想了解的是如何根据我的使用方式以不同的方式加载这些信息。
例如,在首页我有一个所有谜题的列表。在这一点上,我并不真正关心谜题的解决方案或这些解决方案中的步骤(可能会变得非常庞大)。我想要的只是谜题。我会像这样从我的控制器加载它们:
稍后对于拼图视图,我现在只关心当前用户的解决方案。我不想用所有解决方案和所有步骤加载整个图表。
在我的 IPuzzleService 中,我的方法如下所示:
延迟加载在现实世界中实际上并不奏效,因为我的会话是在每个工作单元之后立即处理的。我的控制器没有存储库的任何概念,因此不管理会话状态,并且在呈现视图之前无法保持它。
我试图找出在这里使用的正确模式是什么。我的服务是否有不同的重载,比如和GetPuzzleWithSolutionsAndVotes
更多视图特定的?GetPuzzlesForDisplayView
GetPuzzlesForListView
我说得有道理吗?我离基地很远吗?请帮忙。