Я подключаю внедрение зависимостей Autofac в свое веб-приложение ASP.NET MVC 5 с использованием промежуточного программного обеспечения OWIN (поэтому использую startup.cs вместо global.asax) и пытаюсь использовать внедрение свойств для установки общедоступной переменной в контроллере.
Я играю с внедрением свойств, чтобы Autofac автоматически устанавливал свойство Test в LoginController.
public interface ITest
{
string TestMethod();
}
public class Test : ITest
{
public string TestMethod()
{
return "Hello world!";
}
}
public class LoginController : Controller
{
public ITest Test { get; set; }
public LoginController()
{
var aaa = Test.TestMethod();
// Do other stuff...
}
}
Вот как выглядит мой файл startup.cs. Я играл, поэтому часть этого кода может не понадобиться (или вызвать мою проблему?).
public class Startup
{
public void Configuration(IAppBuilder app)
{
var builder = new ContainerBuilder();
builder.RegisterControllers(Assembly.GetExecutingAssembly()).PropertiesAutowired();
builder.RegisterType<Test>().As<ITest>().SingleInstance();
builder.Register(c => new Test()).As<ITest>().InstancePerDependency();
builder.RegisterType<ITest>().PropertiesAutowired();
builder.RegisterType<LoginController>().PropertiesAutowired();
builder.RegisterModelBinderProvider();
builder.RegisterFilterProvider();
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
app.UseAutofacMiddleware(container);
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
// Some other stuff...
}
}
Таким образом, общедоступное свойство «Тест» всегда имеет значение null и, следовательно, прерывается во время выполнения.
Любые идеи, что может быть моей проблемой? Заранее спасибо за помощь! :)
PropertiesAutowired
, а не зависимость. - person Steve   schedule 17.02.2017