Blazor Как мне получить `ijsobjectreference` при вызове функции JS, которая может вернуть` null`?C#

Место общения программистов C#
Anonymous
 Blazor Как мне получить `ijsobjectreference` при вызове функции JS, которая может вернуть` null`?

Сообщение Anonymous »

Например, у меня есть модуль в TypeScript, такой как: < /p>
export function getIndexedDb() : IDBFactory | null
{
if (window.indexedDB)
return window.indexedDB;
else
return null;
}

Теперь я хочу получить ijsobjectreference его результата, поэтому я попробовал это в csharp:
await using var module = await jsRuntime.InvokeAsync("import", "xxxx.js");
await using var result = await module.InvokeAsync("getIndexedDb");

Он работает хорошо, когда есть window.indexeddb , но когда getIndexedDb () возвращает null , возникнет ошибка:
Uncaught (in promise) Error: Cannot create a JSObjectReference from the value 'null'.

(и я даже не могу поймать исключение в CSHARP. Метод CSHARP, кажется, просто остановился здесь, и более поздние коды не будут выполнены. Это ошибка?)
Итак, что мне сделать, чтобы решить эту проблему? Я не верю, что ниже-хорошая идея: < /p>
class Nullable
{
value: T | null;
constructor(value: T | null)
{
this.value = value;
}
getValue() : T | null
{
return this.value;
}
isNull() : boolean
{
return this.value === null;
}
}

export function getIndexedDb() : Nullable
{
if (window.indexedDB)
return new Nullable(window.indexedDB);
else
return new Nullable(null);
}


Подробнее здесь: https://stackoverflow.com/questions/742 ... ction-whic

Вернуться в «C#»