Что вам нужно, это структура внедрения зависимостей для разрешения ваших зависимостей. Фреймворки DI будут управлять созданием, временем жизни и утилизацией объектов.
builder.RegisterType<MySession>().As<ISession>().InstancePerHttpRequest();
builder.RegisterType<MyMail>().As<IMail>().Singleton();
Затем вы можете использовать инжектор конструктора для внедрения этих
public class MyController : BaseController
{
public MyController(ISession session, IMail mail)
{
_session = session;
_mail = mail;
}
//other methods and member variables
}
Таким образом, вам нужно изменить только одно место, когда вам нужно добавить новые зависимости.