Допустим есть класс Repository, есть входная точка в программу класс Server, в Server'e происходит вызов класса Repository в котором в конструкторе происходит инициализация по типу подключение к БД итд. И есть другой класс Chat который должен обращаться к Repository для отправки сообщений. Как мне из Chat обратиться к Repository что-бы данные которые уже инициализировались не инициализировать их заново а обратиться сразу к методу отправки сообщений который есть в Repository. Сейчас идет обращение к Repository через Server.Repository.SendMessage() где Repository сохранен в виде статичной переменной и представляет из себя partial class, Хотелось бы упростить до Repository.sendMessage().
Как уже писалось, вам нужно использовать dependency injection. .net предоставляет механизмы для этого: https://www.nuget.org/packages/Microsoft.Extensions.DependencyInjection/
Кратко работает это следующим образом:
При старте приложения, вы определяете все возможные зависимости и способ их создания:
var serviceProvider = new ServiceCollection()
.AddSingleton<Server>()
.AddSingleton<Chat>()
.AddSingleton<Reposetory>()
.BuildServiceProvider();
Теперь, если вам понадобиться объект класса сервера, вы можете получить его следующим образом:
var server = serviceProvider.GetService < Server>();
И у вас будет готовы экземпляр сервера со всеми нужными ему зависимостями, то есть если в конструкторе, ему передается Repository, то этот Repository будет создан сам без вашего участия. Таким же образом и Repository автоматически получит все, что ему нужно для работы, другие сервисы или конфигурации. Простой туториал можно почитать по ссылке: https://andrewlock.net/using-dependency-injection-in-a-net-core-console-application/
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab