Если понять именно смысл фразы «Never send a human to do a machine's job», внимательно посмотреть на код и увидеть что метод Print не вызывается из констраутора, то можно сделать вывод, что решение данной задачи нужно можно автоматизировать.
Алгоритм действуют следующим образом:
1. Получаем все публичные и не абстрактные классы в нашей сборке.
2. Создаем экзмепляр каждого класса, при этом сохраняя результат выводимый в консоль.
3. Для каждого экземпляра вызываем функцию Print и записываем результат.
3(а) Для каждого экземпляра получаем все интерфейсы. Вызываем функцию Print для каждого интерфейса (приводим экземпляр к интерфейсу и вызываем метод).
3(б) Для каждого экземпляра получаем все унаследованные классы. Вызываем функцию Print для каждого унаследованного класса.
4. Кушаем фразу приоритетно выбирая те действия которые приводят к созданию экземпляра класса.
Несколько замечаний:
Используется определенная структура данных содержащая:
-Код (пример Finished finished = new Finished(); или finished.Print();)
-Результат (пример 'human ')
-Требующаяся переменная (пример finished)
-Создаваемая перменная (пример finished)
Так как первый класс, чей экземпляр создается, вызывает статические конструкторы, то необходимо вызвать этот алгоритм четыре раза (в разных доменах) — создавая первым каждый из четырех классов. (Но я это не делал, так как мне повзело! Функция GetTypes() возвращает типы сортированные по алфавиту, т.е. Derived идет первым :) )
Алгоритм дал следующий результат:
Derived derived = new Derived(); // Never send a
Finished finished = new Finished(); // human
((Base)derived).Print(); // to
MoreDerived morederived = new MoreDerived(); // do
((IWord)morederived).Print(); // a
morederived.Print(); // mach
MoreDerived2 morederived2 = new MoreDerived2(); // ine's
((IWord2)morederived2).Print(); // job.
Очень хотелось бы увидеть статистику для алфавита {0123456789}, так как некоторые любят ставить пароль свой день рожденье, счастливое число или идентификационный номер налогоплательщика :)
Вообще с каждым годом «начинать» специалисту будет все сложнее и сложнее. Большинство знакомых, которые являются хорошими специалистами начинали еще в универе и к концу учебы имели неплохие позиции в компаниях города. Но, как говорится — упорство и труд все перетрут. Советы хорошие.
Безусловно вы правы. К сожалению, как я ответил каментом выше — это всего лишь часть конфигурационного файла. Написать собственный код у меня не было возможности. Уж простите.
По моему спор на тему связей и денег — это как спор о Божьей искре. Нельзя прикрываться ни тем, ни тем. Работайте, создавайте, придумывайте и пусть вам повезет.
желтенько…
schoolstyle pending changes?Если понять именно смысл фразы «Never send a human to do a machine's job», внимательно посмотреть на код и увидеть что метод Print не вызывается из констраутора, то можно сделать вывод, что решение данной задачи
нужноможно автоматизировать.Алгоритм действуют следующим образом:
1. Получаем все публичные и не абстрактные классы в нашей сборке.
2. Создаем экзмепляр каждого класса, при этом сохраняя результат выводимый в консоль.
3. Для каждого экземпляра вызываем функцию Print и записываем результат.
3(а) Для каждого экземпляра получаем все интерфейсы. Вызываем функцию Print для каждого интерфейса (приводим экземпляр к интерфейсу и вызываем метод).
3(б) Для каждого экземпляра получаем все унаследованные классы. Вызываем функцию Print для каждого унаследованного класса.
4. Кушаем фразу приоритетно выбирая те действия которые приводят к созданию экземпляра класса.
Несколько замечаний:
Используется определенная структура данных содержащая:
-Код (пример Finished finished = new Finished(); или finished.Print();)
-Результат (пример 'human ')
-Требующаяся переменная (пример finished)
-Создаваемая перменная (пример finished)
Так как первый класс, чей экземпляр создается, вызывает статические конструкторы, то необходимо вызвать этот алгоритм четыре раза (в разных доменах) — создавая первым каждый из четырех классов. (Но я это не делал, так как мне повзело! Функция GetTypes() возвращает типы сортированные по алфавиту, т.е. Derived идет первым :) )
Алгоритм дал следующий результат:
Derived derived = new Derived(); // Never send a
Finished finished = new Finished(); // human
((Base)derived).Print(); // to
MoreDerived morederived = new MoreDerived(); // do
((IWord)morederived).Print(); // a
morederived.Print(); // mach
MoreDerived2 morederived2 = new MoreDerived2(); // ine's
((IWord2)morederived2).Print(); // job.
Исходники:
snipt.org/tQg
Да, я понимаю что лучше знать об ООП и просто подумать головой. Но мы же не ищем легких путей ;)
Хотя безусловно такие совпадения настараживают.
4 утром с 4:00 до 8:00 и ближе к вечеру — с 17:00 до 19:00.
За неделю привык. До сих пор отвыкнуть не могу.
В большинстве случаев можно обойтись и без этого.
Плюсанул тебе в карму, не расстраивайся :)
и да, удачи вам!
Что касается функции протокола — мы рассматривали и это тоже и как раз из-за того что не все почтовые сервисы поддерживают такую команду — отказались.