Я хочу создать синглтон, основанный на другом синглтоне, который я создал при предыдущем вызове. Вот код:
services.AddSingleton<IPerson, Person>((ctx) => {
WSPerson wsPerson = new WSPerson(new System.Net.Http.HttpClient(), new PersonRepo(new DBContext(optionsBuilder.Options)));
IMemoryCache memoryCache = ctx.GetService<IMemoryCache>();
return new Person(wsPerson, memoryCache);
});
services.AddSingleton<IEmployee, Employee>((ctx) => {
EmployeeRepo employeeRepo = new EmployeeRepo(new DBContext(optionsBuilder.Options));
IMemoryCache memoryCache = ctx.GetService<IMemoryCache>();
// How to create instance of Person here, while taking the previous singleton added instead of creating another declaration of
// WSPerson wsPerson = new WSPerson(new System.Net.Http.HttpClient(), new PersonRepo(new DBContext(optionsBuilder.Options)));
// Person person = new Person(wsPerson, memoryCache);
return new Employee(employeeRepo, memoryCache, /* person */);
});
Итак, в синглтоне сотрудника мне нужно объявить экземпляр Person, который я уже добавил синглтоном в предыдущей команде. Как передать одноэлементный объект Person, не объявляя другой объект Person внутри пользовательского конструктора одноэлементного сотрудника?