【问题标题】:Implementing Interface and initialise it in MVC Controller实现接口并在MVC控制器中初始化
【发布时间】:2016-03-18 07:02:10
【问题描述】:

我正在使用 Web 应用程序,并且我有一个类,其中包含实现接口的所有业务逻辑。我正在尝试在 startup.cs 中引用接口和类,并尝试在 Controller 中进行初始化。我的业务逻辑类是这样的:

 public class User_MasterDataAccesss: IUserMasterRepository
 {
   .... business logic
   public int validate(string name)
   {
     ...... doing something
   }
 }

我有一个接口,它定义了像这样的验证函数

public interface IUserMasterRepository
{
    int validate(string name);
}

我正在尝试像这样在startup.cs中绑定接口

public partial class Startup
{
    public void Configuration(IAppBuilder app)
    {
        ConfigureAuth(app);
    }
    public void ConfigureServices(IServiceCollection services)
    {
        // Add framework services.           
       // services.AddMvc();

        // Add application services.
        services.AddSingleton<IUserMasterRepository, User_MasterDataAccesss>();

    }
}

我正在尝试像这样初始化控制器中的接口

public class AuthenticationController : Controller
{
    private  IUserMasterRepository UserMasterRepository;
    public AuthenticationController() { }
    public AuthenticationController(IUserMasterRepository userMasterRepository)
    {
        this.UserMasterRepository = userMasterRepository;
    }
    ......... action result actions which is using the UserMasterRepository 

 }

我的问题如下:

  1. 构造函数未执行,因此从操作访问时UserMasterRepository 为空。
  2. startup.cs 中的services.AddMvc(); 不存在
  3. 我知道我可以通过使用 Ninject 来实现我的要求,但我想为此使用 startup.cs 文件
  4. 我不想在控制器中使用新的关键字。

我怎样才能做到这一点?我哪里错了?

【问题讨论】:

  • 如果services.AddMvc() 不可用,听起来您有参考问题。确保您已安装 Nuget 包 Microsoft.AspNet.Mvc 6.0.0-rc1-final。并确保您拥有正确的 using 语句。
  • Package 'Microsoft.AspNet.Mvc.5.2.3' 已存在于项目中,尝试添加包时会出现错误 Install-Package : Unable to find a version of 'Microsoft.AspNet.Razor' that与“Microsoft.AspNet.Razor.Runtime 4.0.0-rc1-final 约束:Microsoft.AspNet.Razor (≥ 4.0.0-rc1-final)”兼容,
  • 您的using 声明怎么样?在您可以让services.AddMvc()ConfigureServices() 方法和app.UseMvc()Configure() 方法中工作之前,什么都不会起作用。我有一个简单的项目可以使用这些using Microsoft.AspNet.Builder; using Microsoft.AspNet.Hosting; using Microsoft.Extensions.DependencyInjection;

标签: c# class interface asp.net-mvc-5 dataabstract


【解决方案1】:

安装ASP.NET 5 runtime and tooling 解决了我的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多