Автоматическое связывание методов Signalr "on" с использованием интерфейса - PullRequest
0 голосов
/ 13 декабря 2018

В моем приложении для передачи сигналов есть клиентский интерфейс ac #:

public interface IFooClient
{
    Task OnFoo(string data);
}

с таким концентратором:

public class FooHub : Hub<IFooClient>
{
    public override async Task OnConnectedAsync()
    {
        await this.Clients.Caller.OnFoo("data");
    }
}

В моем угловом приложении я связываю методы-концентраторы следующим образом:

connection.on("onFoo", this.onFoo.bind(this)); //this.onFoo is a method on this Component

Работает как положено.Однако я хотел бы сделать еще один шаг вперед.Я на самом деле генерирую интерфейсы Typescript из C #, что позволяет мне писать компонент ng следующим образом:

export interface FooClient {  // auto generated
    onFoo(data: string): void;
}    

export class FooComponent implements FooClient {
  onFoo(data: string) {
    // ...
  }

Таким образом, каждый раз, когда изменяется интерфейс C #, восстанавливается машинный текст, и компилятор ng не работает, заставляя меня реализовать недостающий метод.Что не заставляет меня делать, так это привязывать метод с помощью signalr on(...), что все еще необходимо сделать вручную.

Есть ли способ автоматически связать методы?Я знаю интерфейс, знаю класс, реализующий интерфейс, и хочу автоматически соединить точки

...