Как получить тот же экземпляр из области автозапуска? - PullRequest
0 голосов
/ 25 сентября 2019

Используя Autofac, в моем приложении ASP .NET Web API я разрешаю службу в нескольких местах (фильтр Web API, перехватчик запросов в EF6).

В фильтре WebAPI я разрешаю свой сервис и настраиваю какое-то свойство под тем же разрешенным объектом.

Позже в перехватчике EF6, опять же, я разрешаю тот же сервис, запрашиваязначения, ранее измененные в фильтре WebAPI.

Что я заметил, что в разрешенном объекте перехватчика запросов хеш-код отличается от идентификатора, разрешенного в установщике Web API.

Я также пытался изменить значенияиспользуя метод InjectProperties.

Код Global.asax

builder.RegisterType<MyType>().AsSelf().InstancePerRequest();

Код веб-API

using(var scope = container.BeginLifetimeScope())
{
  var service = scope.Resolve<IService>();
  service.A = "test";
  //service.GetHashCode() - 111111
}

EF6-перехватчик запросов

//I'm getting here different hashcode, service.A is null.
using(var scope = container.BeginLifetimeScope())
{
  var service = scope.Resolve<IService>();
  var a = service.A; //service.A here is null (string).
 //service.GetHashCode() - 222222
}

Как получитьтот же экземпляр или, по крайней мере, новый, но со всеми изменениями, внесенными в фильтр веб-API.

...