【发布时间】:2021-10-10 15:03:10
【问题描述】:
我想从 Blazor Wasm 项目中的 .net 类触发一个 JavaScript 函数。 我创建了一个类(客户端)
public class InvokeMyJavaScript
{
private readonly IJSRuntime jSRuntime;
public InvokeMyJavaScript(IJSRuntime jSRuntime)
{
this.jSRuntime = jSRuntime;
}
public async ValueTask InvokeMyJs()
{
await jSRuntime.InvokeVoidAsync("giveMeAMessage");
}
}
我添加到 Program.cs:
builder.Services.AddTransient<InvokeJavaScript>();
在我的 Razor 组件中,我现在可以这样做:
[Inject]
InvokeMyJavaScript imjs { get; set; }
public async void InvokeMyJs()
{
await imjs.InvokeMyJs();
}
完美运行,感谢帮助我的人here。但是当我尝试从课堂上做到这一点时,它出错了。 我试过了:
[Inject]
InvokeMyJavaScript ij { get; set; }
private async Task TestnaarJs()
{
await ij.InvokeMyJs();
}
然后我收到一个错误:对象引用未设置为对象的实例。 我不知道出了什么问题...如何在课堂上进行注入?
【问题讨论】:
-
[Inject]属性适用于组件。为了注入一个普通的类,然后使用构造函数注入。 Read more about that here
标签: c# dependency-injection blazor