簡體   English   中英

是否可以在 .net 中鏈接源生成器?

[英]Is it possible to chain source generators in .net?

我有一個項目,我將 INotifyPropertyChanged 實現為源生成器,我希望能夠在我的各種以 MVVM 為中心的項目中使用它。

該項目使用將屬性應用於部分類中的字段的方法,它將為這些字段生成屬性。

然而,我當前的項目基於 Monogame,並且 UI 框架本身並不支持綁定,所以我想我會提出一個解決方案,避免使用另一個源生成器進行反射。

不幸的是,在我的 INotifyPropertyChanged 源生成器中生成的屬性似乎在我的 MLEM.Ui.Binding 源生成器中不可見。 我只得到原始源代碼中的屬性。

有沒有辦法讓 INotifyPropertyChanged 源生成器先運行,然后在我的第二個綁定源生成器中使用它生成的源代碼?

我嘗試過的事情:

  • 按照我想要的順序排列我的項目參考(雙向)
  • EmitCompilerGeneratedFilesCompilerGeneratedFilesOutputPath設置為一個目錄(我努力排除 obj/Debug/generated 中的文件,所以我最終得到了重復的類)

正如 Marc Gravell 所解釋的,這個問題的答案是否定的。

話雖如此,我已經成功地解決了這個問題,但不是通過在單個編譯單元中鏈接多個源生成器。

我很幸運,我將綁定生成為一組擴展方法,這意味着我可以將我的 ViewModel 和它們的 INPC 源生成器移動到它自己的項目中,然后讓我的綁定源生成器在原始項目上運行。

這意味着當綁定源生成器檢查它時,ViewModel 程序集的輸出已經穩定,並且組裝的 INPC 代碼已經到位。

這可能並不適用於所有人,但也許它開啟了一種可能性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM