gpt4 book ai didi

c# - C# 中 DSL/自定义类型的工具包?

转载 作者:太空宇宙 更新时间:2023-11-03 22:17:43 24 4
gpt4 key购买 nike

所以,我有一个 C# 应用程序,它具有约 4 层深的自定义类型层次结构。

此分层的存在是为了提供数据验证和更改事件传播的干净实现。

一个例子是:DocumentNameValue -> NameValue -> StringValue -> BaseDataValue

该系统运行良好,但考虑到所有间接层,性能冲浪者。从绝对意义上讲,这并不是一个巨大的打击,但它确实加起来了。

澄清一下,性能问题似乎是数据访问时发生的嵌套调用的结果。

例如,调用 DocumentNameValue.setValue("test.doc") 将导致层次结构的每一层对输入运行某些验证测试。这些从底部开始向上移动。沿途还会触发各种事件。如果有意义的话,该值实际上“存储”在层次结构的底部。

由于我真正所做的只是定义了一个严格的类型层次结构,是否存在推荐的方法来执行以下任一操作:

  1. 将此 C# 代码转换为“平面”高性能等效代码? (运行时或编译时)
  2. 或者,也许更好的是,构造一个 DSL,它只会吐出等效的类型/对象列表?

总体目标有两个:拥有特定于我的应用程序问题域的强类型,提供一个干净的地方来放置我的验证规则。

谁能提供一些提示/建议?我做错了吗?

谢谢

最佳答案

我的第一直觉是质疑您如何知道这是性能下降的原因。你跑过探查器吗?

我的第二个问题是要一个代码示例。这种分层是否通过 OOP(继承)反射(reflect)出来?

据我了解,您使用不同的类型来表示不同的关注点——这很好。您已经构建了类似 ViewModel/Model/DataModel 的东西,这是非常标准的。


鉴于您的评论,我建议您下载 ANTS Performance Profiler 的试用版并使用它来分析缓慢的实现;它会准确地告诉您哪些方法花费的时间最长,并让您量化变化的结果。

除非应用程序非常简单,否则我不建议立即拆开您的分层方法。学习如何干净利落地实现分层系统可以让您以后保持理智。

关于c# - C# 中 DSL/自定义类型的工具包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4442213/

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