【发布时间】: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
}
我的问题如下:
- 构造函数未执行,因此从操作访问时
UserMasterRepository为空。 -
startup.cs 中的
services.AddMvc();不存在 - 我知道我可以通过使用 Ninject 来实现我的要求,但我想为此使用 startup.cs 文件
- 我不想在控制器中使用新的关键字。
我怎样才能做到这一点?我哪里错了?
【问题讨论】:
-
如果
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