Используя 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.