gpt4 book ai didi

c# - 最佳解决方案 : Extension Methods or a New Class?

转载 作者:太空宇宙 更新时间:2023-11-03 11:31:07 25 4
gpt4 key购买 nike

所以我会尝试在这个问题上唱反调...

假设有一个框架为 2 或 3 个不同的网站提供服务。 1框架的基本功能是处理对某个DB的所有调用。当进行数据库调用时,网站调用框架数据源对象并取回通用框架数据对象。

现在,对于网站检索特定于其需求的属性/方法,我们有 2 个解决方案选项。

  1. 创建一个新类,扩展或包装通用数据对象,公开更多域友好属性并保留任何域这个新类中的特定功能。

  2. 不是创建新类,而是在框架内创建扩展方法来为每个网站提供服务。所以一切都是包含在框架内,可以在网站之间共享如果需要 1 天。

只是为了澄清这里将是例子:属性:

  1. NewObject.GetSiteSpecificProperty
  2. GenericObject.GetProperty("GetSiteSpecificProperty") 或 GenericObject.GetSiteSpecificProperty()

方法

  1. NewObject.DoSomethingSpecificToThisWebsite()
  2. GenericObject.DoSomethingSpecificToThisWebsite()

那么您会选择哪种解决方案? 1 个还是 2 个?

干杯。

最佳答案

在我看来,在设计框架时,您希望将尽可能多的解决方案特定方面保留在框架之外,并尽可能让调用实体处理这些方面。

现在我不太确定您的框架将如何使用或有多少不同的网站\项目使用,但使用选项 (2) 意味着现在无论何时添加新网站,框架现在都需要按顺序工作来完成这个功能。以自定义方式使用框架的工作应该由网站而不是框架来处理。如果这个框架增长到使用 10 个甚至 100 个网站,这将成为维护的绝对噩梦,你的框架最终看起来更不像一个框架,更像是一个特定于解决方案的产品。使用 (1) 是一个更简洁的解决方案。基本上尽可能保持您的框架可重用和与解决方案无关。

如果你正在设计一个将被许多不同项目使用的框架,并且被设计为存在一段时间,我建议你阅读 Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries (2nd Edition)

关于c# - 最佳解决方案 : Extension Methods or a New Class?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7732008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com