using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string str1 = "стол";
            string str2 = "столы";

            //Пример "интеграционного теста"
            Main1 temp = new Main1();
            temp.RunMain1(str1, str2);

            //Класс Main2 пригоден для модульного тестирования
            //Во внедрении зависимостей место где создаются
            //экземпляры классов называется 'корень компоновки'
            Main2 temp2 = new Main2(new PrintConsole());
            temp2.RunMain2(str1, str2);

            //Внедрение зависимостей с использованием контейнера 'Simple Injector'
            var container = new SimpleInjector.Container();
            container.Register<IPrint, PrintConsole>();

            Main2 temp3 = new Main2(container.GetInstance<IPrint>());
            temp3.RunMain2(str1, str2);

            Console.ReadLine();
        }
    }
}
