【发布时间】:2011-09-21 02:48:57
【问题描述】:
我正在设计一组通用接口,以阐明一些报表的构造。
为了实现这一点,我使用了泛型,我必须在不同的流式类之间传递三个泛型参数。有时我必须通过其中的四个,但这都是由框架完成的,其背后的想法是,只要有足够的注意力,就可以拥有一个完整的界面,而无需输入任何泛型。
一个例子是
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).
...
我可以采用哪些策略来减少泛型的使用并仍然实现编译安全的自定义映射?
有没有人成功地利用泛型(并且可以指出一组很好的例子)来实现流畅的接口?
【问题讨论】:
-
@CodeInChaos 也许吧。但它是有目的的。
-
Microsoft 现在将此代码分析警告记录为:CA1005: Avoid excessive parameters on generic types
标签: c# generics fluent-interface