SourceGenerator:属性 NamedArguements 为空

问题描述 投票:0回答:1

我正在尝试构建我的第一个源生成器,该源生成器旨在注册hangfire重复作业,并且基本版本的工作原理与.你可以在这个项目的master分支上看到这个

想法是,您将能够在重复作业类别中添加一个属性 -

[RecurringJob("DeleteOldReportsAtMidnight", "* *678 * *")]
public class DeleteOldReports
{
    public void Execute()
    {
    }
}

源码生成器自动生成-

namespace TestSolution;

// <auto-generated/>

using Hangfire;
using Microsoft.Extensions.DependencyInjection;

public static class ServiceRegistrationExtensions
{
    public static IServiceCollection RegisterServicesFromTestSolution(this IServiceCollection sc)
    {
        RecurringJob.AddOrUpdate<TestSolution.DeleteOldReports>("DeleteOldReportsAtMidnight", x => x.Execute(), "* *678 * *");
        return sc;
    }
}

用户所要做的就是在启动时调用注册方法

ServiceRegistrationExtensions.RegisterServicesFromTestSolution(services)

我现在遇到的问题是使用带有可选参数的更高级属性。您可以在不同的分支上看到我的所需属性

我能够获取类的属性,但

NamedArguments
始终为空

c# roslyn sourcegenerators csharp-source-generator
1个回答
0
投票

自从我做 SG 以来已经有一段时间了,但我认为问题是,你实际上并没有使用命名参数,它应该看起来像这样:

PrintOrderDetails(orderNum: 31, productName: "Red Mug", sellerName: "Gift Shop");

如果我没记错的话,构造函数的参数名称在这里无关紧要。 您甚至可以使用那里的语义和/或语法模型,为给定参数生成匹配控制器并将动态信息馈送到您的 SG 中。

© www.soinside.com 2019 - 2024. All rights reserved.