'system.Action' не является допустимым типом параметра среды выполнения Windows - PullRequest
1 голос
/ 18 июня 2019

В проекте uwp c # Windows Runtime Component я хочу представить API, который webview js может вызвать с помощью некоторого обратного вызова. Итак, я пытаюсь:

// c#
[Windows.Foundation.Metadata.AllowForWeb]
public sealed class xx{
    public void setOnChange(string name,System.Action action) {
       xxx
    }
}
// js
windows.xx.setOnChange("js",function(){xxx});

Тогда я получил 'system.Action' - недопустимая ошибка типа параметра среды выполнения Windows.

Тогда я попробую другой способ:

//c#
public delegate void Action();
[Windows.Foundation.Metadata.AllowForWeb]
public sealed class xx{
    public void setOnChange(string name,Action action) {
       xxx
    }
}
// js
windows.xx.setOnChange("js",function(){xxx});

C # может компилироваться, и вызывается setOnChange, но js не вызывается.

1 Ответ

1 голос
/ 18 июня 2019

В конце концов я нахожу решение:

//c#
[Windows.Foundation.Metadata.AllowForWeb]
public sealed class xx{
    public void setOnChange(string name,EventHanlder<Object> action) {
       xxx
    }
}
// js
windows.xx.setOnChange("js",function(){xxx});

Я думаю, EventHanlder - это особый тип компонента времени выполнения Windows.

Ps: я прочитал документ https://docs.microsoft.com/en-us/windows/uwp/winrt-components/raising-events-in-windows-runtime-components.Затем я обнаружил, что это можно сделать с помощью переноса класса с обработчиком событий.В нем много кода, как в js, так и в c #, затем я пытаюсь встроить обработчик событий в параметры, затем он работает.Скрытая / недокументированная функция uwp?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...