首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用@inject与使用@inject是否有根本区别?[注入]依赖注入与Blazor

使用@inject与使用@inject是否有根本区别?[注入]依赖注入与Blazor
EN

Stack Overflow用户
提问于 2021-04-16 13:11:27
回答 1查看 824关注 0票数 2

说我有这个:

SomePage.razor:

代码语言:javascript
复制
@inject Something something
@page "/somepage"

<h1> My Page </h1>

@code {
    // Using "Something" here ...
}

这样做有什么根本区别吗?

AnotherPage.razor:

代码语言:javascript
复制
@page "/anotherpage"

<h1> My Page </h1>

@code {
    [Inject]
    Something something { get; set; }
    // Using "Something" here ...
}

或者两者的工作原理是一样的,而这只是“程序员偏好”吗?

EN

回答 1

Stack Overflow用户

发布于 2021-04-16 14:07:49

关于@Yasseros答复的增编:

这是一个演示Razor文件-Pages/Inject.剃刀

代码语言:javascript
复制
@page "/inject"
@namespace Microsoft.AspNetCore.Components
@inject NavigationManager NavManager1
<h1>Hello, world!</h1>

@code {
    [Inject] private NavigationManager NavManager2 { get; set; }
    [InjectAttribute] private NavigationManager NavManager3 { get; set; }
}

,它将预编译到obj/debug/net5.0/Razor/Pages/Inject.razor.g.cs的obj文件夹结构中可查看的以下C#文件。

代码语言:javascript
复制
    [Microsoft.AspNetCore.Components.RouteAttribute("/inject")]
    public partial class Inject : Microsoft.AspNetCore.Components.ComponentBase
    {
        protected override void BuildRenderTree(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder __builder)
        {
            __builder.AddMarkupContent(0, "<h1>Hello, world!</h1>");
        }

    [Inject] private NavigationManager NavManager2 { get; set; }

    [InjectAttribute] private NavigationManager NavManager3 { get; set; }
    [global::Microsoft.AspNetCore.Components.InjectAttribute] private NavigationManager NavManager1 { get; set; }
    }

@inject是Razor属性标记语法,它被转换为C#属性语法。这同样适用于@page转换为类上的RouteAttribute语法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67125885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档