Roslyn:从控制器路由自动生成方法

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

我写了一个 Roslyn 源代码生成器,它访问我所有控制器的方法,这些方法具有 HttpGet、HttpPut、HttpDelete 或 HttpPost 属性,然后制作这样的类,我希望我的 Blazor 客户端类可用:

// <auto-generated>
//     This code was generated by OurGov.Data.Shared.Generators.ApiRoutesGenerator version 1.0.4.1
// </auto-generated>


#nullable enable

namespace OurGov.Data.Shared.Models.Routes;

/// <summary>Defines routes.</summary>
public static partial class ApiRoutes
{
    /// <summary>Endpoints for EventsController</summary>
    public static class EventsRoutes
    {
        /// <summary>HttpGet: See EventsController.GetEventsForFeed</summary>
        public static string GetEventsForFeed(string filterValue) => $"api/events/feed/{filterValue}";


        ...more endpoints...
        
        /// <summary>HttpPost: See EventsController.GetHearingsForCommittee</summary>
        public static string GetHearingsForCommittee() => $"api/events/hearings/search";
    }
}

我将命名空间设置为与如果它是 OurGov.Data.Shared .DLL 的一部分相同的命名空间,但是,唉,(回想起来,很明显)这并不是这样。

我将如何从我的启动项目(即我的控制器所在的位置)生成代码,然后让那些新生成的类自动(理想情况下)被下游项目(服务器依赖的项目)使用?

这是一张描绘建筑的图片:

code-generation roslyn sourcegenerators csharp-source-generator
© www.soinside.com 2019 - 2024. All rights reserved.