我有一些结果类以面向对象的方式表示平面结果。平面结果以文本流的形式出现,格式化程序将平面结果格式化为结果的属性。
我假设我的约定将始终是 <ResultName>
格式化程序。这是 Convention Over Configuration 的好案例吗?如果是,那在 Prism 中会是什么样子(如果 Prism 对这个问题很重要)。
谢谢。
最佳答案
我不确定 Prism 适合的位置,除非 Result-Formatter 对是特定于 Prism 的东西。
除此之外,我认为这是约定优于配置的一个很好的案例,因为您可以创建任意数量的结果类型和格式化程序,而无需将它们添加到任何映射或配置类/文件中。
但是,作为该公约和 API 的创建者,您有责任实现和支持该公约。假设您会反射(reflection)性地发现能够处理结果的格式化程序,这会在第一次请求或应用程序启动时完成吗?您将如何缓存映射?
约定优于配置的很大一部分是将决策从最终开发人员的肩上移开,转而采用合理的默认值和他们可以遵守的标准,但这意味着决定权落在您和级别上必须确定您提供的覆盖粒度。例如,此 API 的使用者是否可以在多个程序集中定义格式化程序(这可能是与 Prism 相关的考虑因素)?如果是这样,这些程序集是如何指定的?消费者能否偏离惯例并将不同名称的格式化程序映射到结果类型?
听起来这是一个只有您会使用的 API,其中大部分内容都没有实际意义,但这些只是一些普遍适用的考虑因素。
关于c# - Convention Over Configuration——这是一个合适的场景吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6046781/