我希望生成一个静态类,该类应该有一个与特定引用程序集中的其他类相关的方法。
一个简化的例子:
我想在“核心”项目中查找“实体(Entity)”类,并在“持久化(Persistence)”项目中生成一个类, 问题是我的“核心(Core)”项目无法访问并且已经在“持久化(Persistence)”之前编译。我应该使用反射(reflection)还是手动读取“核心(Core)”实体?或者有更好的方法来访问“核心(Core)”项目中的语法树(SyntaxTree)吗?
一个简化的例子:
// Generator.csproj
[Generator]
public class MyGenerator : ISourceGenerator
{
public void Initialize(GeneratorInitializationContext context)
{
// Register a factory that can create our custom syntax receiver
context.RegisterForSyntaxNotifications(() => new MySyntaxReceiver());
}
public void Execute(GeneratorExecutionContext context)
{
// var syntaxReceiver = (MySyntaxReceiver)context.SyntaxReceiver;
}
}
private class MySyntaxReceiver : ISyntaxReceiver
{
....
}
// Core.csproj
// namespace Core.Entities
class Entity1 : IAccessControl {}
class Entity2 {}
class Entity3 : IAccessControl {}
// Persistence.csproj => has a reference to Core project and the Generator
// this class should be generated ...
static class GeneratedClass
{
public static void DoSomethingEntity1()
public static void DoSomethingEntity3()
}
我想在“核心”项目中查找“实体(Entity)”类,并在“持久化(Persistence)”项目中生成一个类, 问题是我的“核心(Core)”项目无法访问并且已经在“持久化(Persistence)”之前编译。我应该使用反射(reflection)还是手动读取“核心(Core)”实体?或者有更好的方法来访问“核心(Core)”项目中的语法树(SyntaxTree)吗?