C# C中的静态(编译时/严格类型)多分派支持#
我最近发现自己在代码中反复使用相同的模式。基本上,它是访问者模式的一种变体,我使用它将对基类实例的引用解析为派生类。这种方法需要大量的样板代码 问题:C# C中的静态(编译时/严格类型)多分派支持#,c#,design-patterns,programming-languages,visitor-pattern,multimethod,C#,Design Patterns,Programming Languages,Visitor Pattern,Multimethod,我最近发现自己在代码中反复使用相同的模式。基本上,它是访问者模式的一种变体,我使用它将对基类实例的引用解析为派生类。这种方法需要大量的样板代码 问题: 如何以静态/严格类型的方式在C#中多分派一个方法,而不编写大量的访问者代码 是否有生成此代码的工具/扩展 为什么C语言中没有解决多调度问题的语言?我不相信我是唯一一个觉得这很烦人的人。我可能大错特错了,而且这个问题并不存在,所以我想知道你是怎么处理的 如何以静态/严格类型的方式在C#中多分派一个方法,而无需编写大量的访问者代码 我不知道这方面
- 如何以静态/严格类型的方式在C#中多分派一个方法,而不编写大量的访问者代码
- 是否有生成此代码的工具/扩展
- 为什么C语言中没有解决多调度问题的语言?我不相信我是唯一一个觉得这很烦人的人。我可能大错特错了,而且这个问题并不存在,所以我想知道你是怎么处理的
当将“双重(或多重)虚拟分派”模式嵌入到语言中成为花费预算的最佳方式时,我们会这样做,而不是在之前。因此,你应该期待一个漫长的等待。你不是在几个小时前才问这个问题吗?这个问题听起来像是在咆哮。也许你可以就“已知的替代方案”的问题展开辩论并举出实际的例子。如果你想将这些问题传达给C#团队,那么你应该直接与他们展开对话。@bonomo:首先,我认为你会发现很少有语言实现了多个虚拟分派,而那些实现了多个虚拟分派的语言并不是非常流行的语言。这是有原因的;与成本相比,它实际上并不是一个有用的功能。其次,我不同意将动态分派添加到C#是一种浪费资源的说法。强调动态分派:在不严格需要静态键入的情况下,例如在Web视图中,它允许一些非常简单的代码。当我在ASP.net MVC中工作时,它对我产生了巨大的影响,尤其是一个允许控制器返回匿名类型作为视图模型的技巧。@bonomo-我怀疑,与编写访问者的困难相比,更多的开发人员因为与Office互操作的困难而受到伤害。我个人并不认为
dynamic
是一个令人兴奋或有趣的功能,但我可以理解为什么许多C#开发者会这么做。@bomono VB.NET将是开发人员的合适工具,他们的头脑不会因为VB.NET中的所有关键字而受到伤害。我在VB6和OfficeVBA上编程时遇到了麻烦,但我发现VB.NET非常冗长。C#的动态特性是类似品味的C#开发人员的工具。