【发布时间】:2021-09-23 12:14:52
【问题描述】:
我有一个项目,我将 INotifyPropertyChanged 实现为源生成器,我希望能够在我的各种以 MVVM 为中心的项目中使用它。
该项目使用将属性应用于部分类中的字段的方法,它将为这些字段生成属性。
然而,我当前的项目是基于 Monogame 的,并且 UI 框架本身不支持绑定,所以我想我会使用另一个源生成器来避免反射的解决方案。
不幸的是,在我的 INotifyPropertyChanged 源生成器中生成的属性似乎在我的 MLEM.Ui.Binding 源生成器中不可见。我只得到原始源代码中的属性。
有没有办法让 INotifyPropertyChanged 源生成器先运行,然后在我的第二个绑定源生成器中使用它生成的源代码?
我尝试过的事情:
- 按照我想要的顺序(双向)排列我的项目引用
- 将
EmitCompilerGeneratedFiles和CompilerGeneratedFilesOutputPath设置为目录(我努力排除 obj/Debug/generated 中的文件,所以我最终得到了重复的类)
【问题讨论】:
-
不,不能链接源生成器
-
目前,不,这是不可能的;它已经被提出了几次,但是关于排序、循环、依赖等以及这些问题的性能存在很多非常复杂的问题,所以现在采取的方法是“保持简单:生成器是独立的,不能互相看到”
-
听起来我短期内最大的希望是重构我的代码,以便我可以将两个生成器合二为一。
标签: c# roslyn csharp-source-generator