我有 3 個專案
Project A (Client)
Project B (Server)
Project C (Shared)
在專案 BI 中,使用物體框架以及所有物體類具有資料庫連接,專案 A(客戶端)不應訪問專案 B(服務器)。我想嚴重依賴 DTO 進行客戶端/服務器通信。這些 DTO 應該在專案 C 中創建,以便客戶端和服務器都可以使用它們。源生成器非常適合生成 dto,但是源生成器是否可以使用專案 B 中的物體類在專案 C 中生成 DTO?
uj5u.com熱心網友回復:
您只能為正在構建的當前專案生成內容,但只要您通過參考了解所需的型別,您仍然可以訪問來自其他專案的資訊。GeneratorExecutionContexthas context.Compilation.References,它給了你所有的鉤子MetadataReference。這是高級別的,但您可以使用context.Compilation.GetAssemblyOrModuleSymbol(MetadataReference),它為您提供每個參考的型別模型的根;從那里,您可以檢查所有型別及其屬性、屬性等 - 大概是為了生成您的 DTO。
但是,我想知道是否更容易/更可取的是明確的,并做一些明確的事情,B例如:
[module:GenerateDtoWhateverFor(typeof(B.Foo))]
[module:GenerateDtoWhateverFor(typeof(B.Bar))]
// etc
并檢測/回應。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/515702.html
