在我的Blazor服务器应用程序中,我可以很容易地实例化类,比如说,.rarzor部分中的DAL类:
@page "/"
@inject DAL.DALClass dal
并在我的@code{}作用域中使用它。
但是,如果我尝试在我的领域逻辑类(如(中实例化它
public class ServerDesktopDTO : DesktopDTO
{
[Inject]
protected DAL.DALClass dal { get; set; }
...
dal始终为空。为什么它的工作方式不同?如何使用[inject]属性和DI容器将其注入到我的类中?
它的工作方式不同,因为组件是由渲染引擎而不是DI容器创建的
因此,为Blazor引入了InjectAttribute
,渲染引擎在其创建的组件中查找InjectAttribute
,并要求DI contrainer创建相应的依赖项。但它并没有查找所有具有InjectAttribute
的类
在其他类中,如果使用默认的DI容器,则使用构造函数注入来提供依赖关系。其他DI容器,如Unity或Autfac,可以为每个属性或方法注入依赖项。