В моем приложении для передачи сигналов есть клиентский интерфейс 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(...)
, что все еще необходимо сделать вручную.
Есть ли способ автоматически связать методы?Я знаю интерфейс, знаю класс, реализующий интерфейс, и хочу автоматически соединить точки