C# 简单网络表单

C# 简单网络表单,c#,asp.net,.net,code-behind,simple-injector,C#,Asp.net,.net,Code Behind,Simple Injector,好的,我有一个UI层和一个BLL层 namespace BLL { public class User : IUser { public void DoSomething(){} } public interface IUser { void DoSomething(); } public static class TypeRegistry { public static void Register

好的,我有一个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;
     }
}

编译错误:登录名不包含接受0个参数的构造函数此链接帮助我获得了答案:

类似于@Steven的链接


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


So
私人用户
应成为
公共用户。由于Web表单要求您通过构造函数注入进行属性注入,因此属性用户应该可以公开访问以进行注入。

您是否已将ASP.NET配置为使用依赖项注入框架?您是否正确配置了DI框架来处理ASP.NET的依赖关系?如果您是这个意思的话,我已经添加了simple injector包。但是我知道simple injector将对象注入构造函数,但是在UI中,您不能拥有构造函数,您需要初始化页面事件上的
user
字段。查看并确定哪个事件适合您的用例(可能是
Page\u Init
Page\u Load
)。
    public Login(IUser user){ this.user = user;}