gpt4 book ai didi

.net - CodeDom 有官方替代品吗?

转载 作者:行者123 更新时间:2023-12-04 02:17:24 26 4
gpt4 key购买 nike

我正在调查 System.CodeDom namespace用于独立于语言(至少在一定范围内)的源代码生成,我发现一些信息不鼓励使用 CodeDom .

我认为 this early blogpost 中描述的一些遗漏现在已经修复, CodeDom does not seem to provide a way to create a switch statement仍然允许 - 性能较低? - 解决方法,而不用丑化生成类型的公共(public)接口(interface)。这同样适用于 automatic C# propertiescollection initializers .

但是,其他遗漏无法真正解决,例如 inability to create finalizers , impossibility to declare extension methods ,或 lacking direct support of generic reference type constraints .

请注意,建议使用 CodeSnippetTypeMember 的解决方案或通过任何其他方式注入(inject)文字源代码片段都不令人满意,因为它们不是语言独立的 - 从而消除了使用 CodeDom 的全部意义。而不是 String.Format带有文字代码片段。

最后,甚至建议in this SO question 'CodeDom 是一个失败,而表达式树(或者更确切地说是“语句”树)是前进的方向' - 尽管没有任何解释如何从 expression tree 实际获取任何源代码(除了 classes cannot be declared with expression trees 的限制。

CodeDom 是否仍然是生成源代码的首选方法,或者当前的 BCL 是否提供了一个我没有想到的名称的模糊替换?

最佳答案

我认为 CodeDom 仍然是 BCL 中的最佳解决方案 今天,但是 :Roslyn 项目进行得很远,已经推出了几个 CTP。目标是将编译器作为服务提供,它将通过简单的 API 实现代码生成和代码检查场景。

看看它,如果您可以为您的项目使用预发布位:Roslyn CTP .这是一个相关的(虽然已经过时,但仍然有一些很好的信息)StackOverflow 问题:Microsoft Roslyn vs. CodeDom .最后,一篇关于使用 Roslyn 进行代码生成的文章:Code Generation in .NET with the Roslyn CTP

关于.net - CodeDom 有官方替代品吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14797018/

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