流畅的接口:避免泛型类型上的过多参数

时间:2011-09-20 18:43:47

标签: c# generics fluent-interface

我正在设计一组通用接口,以澄清一些报告的构建。

为了实现这一点,我使用泛型,我必须在不同的流畅类之间传递三个通用参数。有时我必须通过其中的四个,但这一切都是由框架完成的,背后的想法是,只要有足够的注意力,就可以拥有一个完整的界面,而无需输入任何泛型。

一个例子是

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

运行FXCop产生了这种类型的无数抱怨:

Error, Certainty 85, for AvoidExcessiveParametersOnGenericTypes

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

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

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

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

1 个答案:

答案 0 :(得分:5)

听起来我应该为你的代码压制FXCop警告。如果自然存在三个泛型类型参数,那么就是生命。记录它,它应该没问题,IMO。

像FXCop这样的工具会有所帮助,而不是成为代码的最终仲裁者。