为了账号安全,请及时绑定邮箱和手机立即绑定

如何实现像IAbpSession这样的属性注入?

如何实现像IAbpSession这样的属性注入?

C#
MMMHUHU 2021-06-04 13:43:39
我正在尝试实现我自己的自定义IAbpSession,但我不知道如何实现与IAbpSession. 我AppServiceBase的如下:public abstract class EdwardAppServiceBase : ApplicationService{    public TenantManager TenantManager { get; set; }    public UserManager UserManager { get; set; }    protected EdwardActiveUnitOfWork EdwardActiveUnitOfWork => (EdwardActiveUnitOfWork)UnitOfWorkManager.Current;    protected IEdwardSession EdwardSession { get; set; }     // protected IEdwardSession EdwardSession => AbpSession as IEdwardSession;    protected SensingStoreCloudAppServiceBase()    {        // EdwardSession = NullEdwardSession.Instance;        LocalizationSourceName = SensingStoreCloudConsts.LocalizationSourceName;    }}如果我取消注释EdwardSession = NullEdwardSession.Instance;,我总是得到NullEdwardSession而不是IEdwardSession实现:EdwardSession。我只能这样做AbpSession as IEdwardSession。ABP 如何注入IAbpSession并设置其值ApplicationService?
查看完整描述

1 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

ABP 使用 Castle Windsor 进行依赖和属性注入

如何注入属性

依赖项的属性注入旨在在创建组件时在组件激活期间完成。默认情况下,确定用于注入的属性的责任是通过PropertiesDependenciesModelInspector-IContributeComponentModelConstruction使用以下所有标准来确定属性是否表示依赖项的实现:

  • 具有“公共”可访问的 setter

  • 是一个实例属性

  • 如果ComponentModel.InspectionBehavior设置为PropertiesInspectionBehavior.DeclaredOnly,则不被继承

  • 没有参数

  • 没有用Castle.Core.DoNotWireAttribute属性注释

所以让它public

// protected IEdwardSession EdwardSession { get; set; }

public IEdwardSession EdwardSession { get; set; }


查看完整回答
反对 回复 2021-06-05
  • 1 回答
  • 0 关注
  • 169 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信