【问题标题】:Simple Injector Web Forms简单的注入器 Web 表单
【发布时间】:2023-03-10 04:32:01
【问题描述】:

好的,所以我有一个 UI 层和一个 BLL 层。

namespace BLL 
{
   public class User : IUser
   {
        public void DoSomething(){}
   }
   public interface IUser
   {
        void DoSomething();
   }
   public static class TypeRegistry
   {
        public static void RegisterTypes(Container container)
        {
            container.Register<IUser, User>(Lifestyle.Singleton);
        }
    }
}

namespace UI
{
     public partial class Login : System.Web.UI.Page
     {
          private IUser user;
     }
}

我不知道如何让用户不为空。我尝试过创建一个构造函数,但导致错误

    public Login(IUser user){ this.user = user;}

编译错误:登录不包含采用 0 个参数的构造函数

【问题讨论】:

  • 您是否已将 ASP.NET 配置为使用您的依赖注入框架?您是否正确配置了 DI 框架来处理 ASP.NET 的依赖关系?
  • 如果这就是你的意思,我已经添加了简单的注射器包。但我知道简单的注入器将对象注入构造函数,但在 UI 中你不能有构造函数
  • 您需要在页面的某个事件上初始化user字段。查看page lifecycle 并确定哪个事件适合您的用例(可能是Page_InitPage_Load)。

标签: c# asp.net .net code-behind simple-injector


【解决方案1】:
【解决方案2】:

如果您已按照Web Forms integration guide of the documentation 中的说明正确完成所有注册,那么我认为问题在于您将页面中的 IUser 可访问性级别设置为 private

所以private IUser user; 应该变成public IUser user;。由于 Web 表单要求您进行属性注入而不是构造函数注入,因此属性用户应该可以公开访问以进行注入。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多