所以,我有一个C#应用程序,它具有大约4层深的自定义类型层次结构。C#中DSL /自定义类型的工具包?
此分层的存在是为了提供数据验证和更改事件传播的干净实施。
一个例子是: DocumentNameValue -> NameValue - > StringValue -> BaseDataValue
。
该系统工作正常,但给予所有层间接性,性能冲浪者。绝对而言,这不是一个巨大的打击,但它确实加起来。
为了澄清,性能问题似乎是数据访问发生嵌套调用的结果。
例如,调用DocumentNameValue.setValue("test.doc")
将导致层次结构的每一层都在输入上运行特定的验证测试。这些从基地开始并向上移动。一路上也发生了各种各样的事件。该值实际上是“存储”在层次结构的基础上的,如果这有意义的话。
因为所有我真的做的是确定一个类型的严格的等级制度,确实存在一个推荐的方法做任何的:
- 变换在此C#代码为“平”高性能等同? (运行时或编译时)
- 或者,或许更好,构建一个DSL只会吐出类型/对象的等效列表?
总体目标是双重的:具有特定于我的应用程序问题域的强类型,提供一个干净的地方来放置我的验证规则。
任何人都可以提供一些提示/建议吗?我做这一切都错了吗?
谢谢
您仍然没有给我们任何理由认为层次结构与性能问题有关,甚至根本不存在性能问题。 – 2010-12-15 00:37:36