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

发布于 2024-12-05 17:30:42 字数 765 浏览 0 评论 0原文

我正在设计一组通用接口,以阐明一些报告的构造。

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

一个例子是

        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).
...

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

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

I am designing a set of generic interfaces in order to clarify the construction of some reports.

To achieve this I am using generics and I have to carry over three generic parameters between different fluent classes. Sometimes I have to pass four of them but it is all done by the framework and the idea behind is that, with enough attention, it is possible to have a whole interface without having to type any generics at all.

An example is

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

Running FXCop produces an endless set of complaintsof this type:

Error, Certainty 85, for AvoidExcessiveParametersOnGenericTypes

I am using generics to create "type safe" (perhaps type aware is more correct) interfaces where mappings can be defined as in

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

What strategies can I adopt to reduce the use of generics and still achieve compile-safe custom mappings?

Has anyone successfully utilised generics (and can point me to a good set of examples) to implement a fluent interface?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

三月梨花 2024-12-12 17:30:42

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

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

It sounds to me like you should just suppress that FXCop warning for your code. If there are naturally three generic type parameters, then such is life. Document it carefully and it should be fine, IMO.

Tools like FXCop are there to be helpful, not to become the ultimate arbiters of your code.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文