Два РАЗЛИЧНЫХ компонента Blazor определяют следующий метод экземпляра:
[JSInvokable]
public void MyInstanceMethod()
{
...
}
Во время загрузки они вызывают функцию js, передавая себя js:
await JS.InvokeAsync<object>("jsFunction", new DotNetObjectRef(this));
В js переданныйСсылка на объект .NET сохраняется в переменной с именем _callback.Позже, событие, происходящее в javascript, вызывает метод экземпляра
_callback.invokeMethodAsync("MyInstanceMethod");
Консоль браузера завершается с ошибкой:
blazor.webassembly.js:1 Uncaught (in promise) Error:
System.InvalidOperationException:
The assembly 'WebApplication7.Client' contains more than one [JSInvokable] method
with identifier 'MyInstanceMethod'.
All [JSInvokable] methods within the same assembly must have different identifiers.
Кстати, все идет хорошо, если только один компонент имеетmethod.
Разве это не нарушение одной из фундаментальных возможностей области видимости в любом языке OO?
Кто-нибудь может мне сказать, почему методы, включая методы экземпляров, должны иметь разные идентификаторы длябыть JSInvokable?
Если это предел Blazor, есть ли план это исправить?