簡體   English   中英

如何在編譯時動態生成C# class?

[英]How to dynamically generate C# class at compile time?

比如我寫了一個SomeEntity class:

class SomeEntity
{
    public object Content { get; set; }
}

我希望我的項目基於SomeEntity自動生成另一個 class 的代碼:

class SomeProvider
{
    public SomeEntity GetEntity(object content) => new SomeEntity { Content = content };
}

這只是一個簡單的demo,真正需求的邏輯要比這復雜的多。

在我的認知中,這就像Protobuf根據.proto文件生成了對應的.proto ,生成的class可以被IDE正確識別(class生成在obj目錄下,如何實現?)。

我試過Fody ,但是注入的object好像不能被IDE識別。

最好的技術原理和解決方案是什么?

使用 Fody 技術,當一些代碼被注入時,IDE 和編譯器將不會意識到它。 我推薦 Rosyln,它旨在做准確的事情等等。 看看這個鏈接https://learn.microsoft.com/en-us/do.net/csharp/roslyn-sdk/source-generators-overview

為了比較 .net 的不同可用源代碼生成,這里有一篇很好的文章: https://dominikjeske.github.io/source-generators/

暫無
暫無

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

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