C# 在Blazor中使用@inject和[inject]依赖项注入有什么根本区别吗

C# 在Blazor中使用@inject和[inject]依赖项注入有什么根本区别吗,c#,blazor,.net-5,C#,Blazor,.net 5,假设我有这个: SomePage.razor: @inject Something something @page "/somepage" <h1> My Page </h1> @code { // Using "Something" here ... } @page "/anotherpage" <h1> My Page </h1> @code { [Injec

假设我有这个:

SomePage.razor:

@inject Something something
@page "/somepage"

<h1> My Page </h1>

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

<h1> My Page </h1>

@code {
    [Inject]
    Something something { get; set; }
    // Using "Something" here ...
}
@注入一些东西
@页面“/somepage”
我的页面
@代码{
//在这里使用“某物”。。。
}
这有什么根本区别吗:

另一页。剃刀:

@inject Something something
@page "/somepage"

<h1> My Page </h1>

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

<h1> My Page </h1>

@code {
    [Inject]
    Something something { get; set; }
    // Using "Something" here ...
}
@page”/anotherpage
我的页面
@代码{
[注入]
某物某物{get;set;}
//在这里使用“某物”。。。
}

或者它们的工作原理相同,这只是“程序员偏好”?

这两种方法是相同的。事实上,@inject语法只是[inject]语法的简写

一个详细说明@Yasseros答案的附录:

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

@page”/inject
@命名空间Microsoft.AspNetCore.Components
@注入NavigationManager NavManager1
你好,世界!
@代码{
[Inject]专用导航管理器NavManager2{get;set;}
[InjectAttribute]专用导航管理器NavManager3{get;set;}
}
将其预编译为以下C#文件-可在obj/debug/net5.0/Razor/Pages/Inject.Razor.g.cs的obj文件夹结构中查看:

[Microsoft.AspNetCore.Components.RouteAttribute(“/inject”)]
公共部分类注入:Microsoft.AspNetCore.Components.ComponentBase
{
受保护的覆盖void BuildRenderTree(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder\uuu builder)
{
__AddMarkupContent(0,“你好,世界!”);
}
[Inject]专用导航管理器NavManager2{get;set;}
[InjectAttribute]专用导航管理器NavManager3{get;set;}
[全局::Microsoft.AspNetCore.Components.InjectAttribute]专用导航管理器NavManager1{get;set;}
}

@inject
是Razor属性标记语法,可转换为C#属性语法。这同样适用于将类中的
@page
翻译成
RouteAttribute
语法。

谢谢!我是Blazor的新手,尝试了这两种方法,但似乎没有任何改变,所以我想知道是否有[可能]某种理由使用一种方法而不是另一种方法。“专家”会知道的。试图找到描述此声明的文档,但未能找到,您知道文档在哪里吗?@RandRandom