Как правильно сделать Dependency Injection. Теоретический вопрос

169
30 марта 2019, 11:20

Изучаю вопрос связанный с IOC (Инверсия управления), как я понял это некий абстрактный паттерн, который говорит,что нужно делать слабое связывание между элементами системы, и элементы зависят только от абстракции. А реализация этого паттерна это или Dependency injection или использование контейнера. Иcпользование контейнера более менее понятно, на примере Autofac. А вот как сделать просто Dependency Injection. Правильно ли я делаю реализация через конструктор? И что значит делать инжекцию через метод? Код

 public interface IServise
 {
    string Print();
 }

Класс ,который его реализует.

 class Class1:IServise
 {
     public string Print()
     {
         string g = "строка";
         return g;
     }
 }

Класс в который делаю инжекцию.

class  ClassForInject
{
        private IServise _srServise;
        private string _a;
        //  в конструктор внедряю зависимость
        public ClassForInject(IServise _srServise)
        {
           _a=_srServise.Print();
        }

       public void Metod2()
       {
           Console.WriteLine(this._srServise.Print());
           // или 
           Console.WriteLine(_a);
       }
   }

И метод Main

  class Program
  {
       static void Main(string[] args)
       {
             // тут я должен в конструктор добавить ссылку
             ClassForInject k = new ClassForInject();
             k.Metod2();
             Console.ReadKey();
        }
   }
READ ALSO
Вывод/чтение из консоли WinForms C#

Вывод/чтение из консоли WinForms C#

Столкнулся с проблемойПриложение WinForms, хочу вывести некоторую информацию в консоль

171
Как сделать выдвигаемое меню в unity3d

Как сделать выдвигаемое меню в unity3d

Как сделать так, чтобы сделать выдвигаемое меню свайпом, но не просто, чтобы после свайпа отображался объект, а чтобы и сама менюшка выезжала...

188
SelectedItem C# WPF вместо SelectionChanged

SelectedItem C# WPF вместо SelectionChanged

Что лучше использовать? Вместо SelectionChanged использовать SelectedItem

160
Есть число. Необходимо с помощью цикла пройтись по его цифрам и сложить те, которые подходят по условию

Есть число. Необходимо с помощью цикла пройтись по его цифрам и сложить те, которые подходят по условию

Есть числоНеобходимо с помощью цикла пройтись по его цифрам и сложить те, которые подходят по условию

173