Roslyn 的代码生成 API 是不可变的吗?
Are Roslyn's code generation APIs immutable?
我开始尝试使用 Roslyn 来生成一些代码。我注意到当我在语法对象上调用 .Add...
时,我调用的原始对象没有发生变化。 Roslyn 就是这样设计的吗?有没有办法让它可变?
是的,语法树是不可变的。 Roslyn 团队的一些原创设计讨论是关于不变性的:
https://github.com/KirillOsenkov/Bliki/wiki/Roslyn-Immutable-Trees
有几点是并发性和线程安全性,以及无需实现写时复制之类的功能即可进行重复数据删除。
我不知道有什么方法可以让它们可变。
我开始尝试使用 Roslyn 来生成一些代码。我注意到当我在语法对象上调用 .Add...
时,我调用的原始对象没有发生变化。 Roslyn 就是这样设计的吗?有没有办法让它可变?
是的,语法树是不可变的。 Roslyn 团队的一些原创设计讨论是关于不变性的:
https://github.com/KirillOsenkov/Bliki/wiki/Roslyn-Immutable-Trees
有几点是并发性和线程安全性,以及无需实现写时复制之类的功能即可进行重复数据删除。
我不知道有什么方法可以让它们可变。