c# - 流畅的接口(interface) : Avoid Excessive Parameters On Generic Types

标签 c# generics fluent-interface

我正在设计一组通用接口(interface),以阐明某些报表的构造。

为了实现这一点,我使用了泛型,并且我必须在不同的 Fluent 类之间传递三个泛型参数。有时我必须传递其中的四个,但这都是由框架完成的,其背后的想法是,只要给予足够的关注,就可以拥有一个完整的接口(interface),而根本不必键入任何泛型。

一个例子是

        t1.Schedule.ForSession(Session).
            WithName("TestName").
            Map.
            Args.FromResultsOfTask(t2).UsingDefaultMappings().
            And.
            WaitOnCompletionOfTask(t4);

运行 FXCop 会产生无穷无尽的此类投诉:

Error, Certainty 85, for AvoidExcessiveParametersOnGenericTypes

我正在使用泛型来创建“类型安全”(也许类型感知更正确)接口(interface),其中可以定义映射

...
Map.Args.From(myObject).
    Mapping(x=>x.MyProperty).To(y=>y.ArgsProperty).
...

我可以采用什么策略来减少泛型的使用并仍然实现编译安全的自定义映射?

有没有人成功地利用泛型(并且可以给我指出一组很好的例子)来实现流畅的界面?

最佳答案

在我看来,您应该为您的代码抑制 FXCop 警告。如果自然存在三个泛型类型参数,那么这就是生活。仔细记录它,它应该没问题,IMO。

像 FXCop 这样的工具是用来提供帮助的,而不是成为代码的最终仲裁者。

关于c# - 流畅的接口(interface) : Avoid Excessive Parameters On Generic Types,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7490125/

相关文章:

c# - 通过引用列名查找列索引?

c# - WCF 服务上的自定义基本身份验证

c# - 逐步更新 ASP.NET MVC 中的模型

c# - 如何在C#中将JSON对象序列化或反序列化到一定深度?

Scala,通用元组

fluent - 有流畅的接口(interface)吗?

javascript - 异步流畅的 javascript (node) 接口(interface)(使用 deferreds)

java - 为什么 Hashtable 内部使用 Entry<?,?>?

swift - 在 Swift 中,如何转换为具有关联类型的协议(protocol)?

python - 你能在 Python 的核心类型上修改补丁方法吗?