c# - Moq、Ninject、Fluent NHibernate 风格的库?

标签 c# moq

这是一个头脑 Storm 问题。如有任何意见,我们将不胜感激。

最近我观察到一些源代码框架,它们的模式彼此相似。

Moq

mock.Setup(framework => framework.DownloadExists("2.0.0.0"))
    .Returns(true)
    .AtMostOnce();

Ninject

Bind<IService>().To<RedImpl>().WhenMemberHas<RedAttribute>();

Fluent NHibernate

   HasManyToMany(x => x.Products)
     .Cascade.All()
     .Table("StoreProduct");

我注意到它们都与某种配置有关。并且比普通的属性设置配置更方便使用。

我可以说我喜欢这种风格,但不知道为什么。

谁能告诉我它有什么优势,这种风格什么时候有用?另外,这种风格有名字吗?这是如何在幕后实现的?如果有关于如何编写 Moq 样式的教程,将不胜感激。

更新

感谢大家的帮助。现在我知道这种风格叫做Fluent Interface,有没有关于如何创建示例 Fluent 界面的教程?

最佳答案

该模式称为 Fluent Interface,在 http://www.martinfowler.com/bliki/FluentInterface.html 中有更详细的描述。

它通常最适合用于任务的全面领域特定语言过度杀伤力的情况。基本上,您在编写的每个方法中返回您正在操作的对象,并尝试使方法名称与意图紧密匹配。

虽然不一定有联系,但您可能希望比较构建器模式以作为构建复杂对象的替代方法,因为一些激励场景是相似的。

关于c# - Moq、Ninject、Fluent NHibernate 风格的库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4293187/

相关文章:

c# - 重命名类 Visual Studio 2017

c# - 加密函数在 windows 和 unix 上给出不同的输出

c# - C# 中的最小起订量和文件/数据保存

c# - 如何在 C#.NET 中使用 Moq 模拟在单次调用中多次调用的方法?

c# - 如何 Moq Entity Framework SqlQuery 调用

c# - 如何将从数据库中检索到的日期转换为仅显示 d/mm/yyyy?

c# - 如何添加 Razor 背景图片

C#:涉及空引用时重载 == 运算符的最佳实践

c# - 无法将带 [] 的索引应用于类型 'CaSTLe.Proxies.RangeProxy' 的表达式

c# - 模拟内部对象的事件不会触发?