为一个 class/interface 生成多个接口

Generate multiple interfaces for one class/interface

有没有办法为一个class生成多个interfaces/classes。

我将拥有一个如下所示的 SignalR 集线器 class:

[TsInterface]
public class ChatHub : Hub
{

    public async Task<IEnumerable<string>> GetMessages() {...}

    public async Task EmitMessage(string msg) {...}
}

这就是我想要的输出:

interface ChatHub extends SignalR.Hub.Proxy {
    client: ChatHubClient;
    server: ChatHubServer;
}

interface ChatHubClient { // always empty. }

interface ChatHubServer {
    getMessages(): Promise<string[]>;
    emitMessage(msg: string): Promise<void>;
}

您可以使用简单的界面代码生成器实现:

using Reinforced.Typings.Ast;
using Reinforced.Typings.Ast.TypeNames;
using Reinforced.Typings.Generators;

class ClientAppender : InterfaceCodeGenerator
{
    public override RtInterface GenerateNode(Type element, RtInterface result, TypeResolver resolver)
    {

        var existing = base.GenerateNode(element, result, resolver);
        if (existing == null) return null;

        if (this.Context.Location.CurrentNamespace == null) return existing;
        RtInterface clientIFace = new RtInterface()
        {
            Name = new RtSimpleTypeName(string.Format("{0}Client", element.Name))
        };
        this.Context.Location.CurrentNamespace.CompilationUnits.Add(clientIFace);
        return existing;
    }
}

然后像这样使用它

 builder.ExportAsInterface<ChatHub>()
            .WithPublicMethods()
            .WithPublicProperties()
            .WithCodeGenerator<ClientAppender>();

抱歉,我没有空闲时间回答您之前的问题。