Есть метод. В этом методе должны кое-какие данные из основной программы, где этот метод и вызывается. Можно ли как-нибудь прописать входные данные в реализации метода, но так, чтобы эти данные передавались автоматически и я не указывал их каждый раз, при его вызове. Например :
Security sec = new Security();
GetData();
---------------
---------------
--------------
public void GetData(Security sec)
{
int count = sec.Count;
}
Верхняя часть и нижняя находятся в разных классах.
Фактически, вопрос заключается не в невидимых параметрах, а в передаче контекста между методами.
Ты можешь создать явный класс-контекст, проинициализировать его new Security() и передавать его во все методы, как обязательный параметр.
Можешь вызывать методы через него, имея доступ к этой "скрытой" переменной.
Можешь создать синглтон, если в один момент времени только один поток управляет этим параметром.
Ну, а можешь сделать ленивую передачу через AsyncLocal. Только стоит учитывать, что отсутствие строгих связей затрудняет восприятие кода, а найти зависимости становится значительно сложнее.
class Security
{
private static readonly AsyncLocal<Security> _asyncLocal = new AsyncLocal<Security>();
public static Security Current
{
get => _asyncLocal.Value;
set => _asyncLocal.Value = value;
}
public Int32 Count { get; set; }
}
class Program
{
static void Main(string[] args)
{
Security.Current = new Security();
try
{
GetData();
GetData();
GetData();
}
finally
{
Security.Current = null;
}
}
public static void GetData()
{
int count = Security.Current.Count;
}
}
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости