Как отметила Тициан Черникова, я просто использовал более старый компилятор Typescript. Eclipse позволяет вам использовать специфичный для проекта компилятор, но я не стал настраивать конфигурацию проекта.
Один общий сценарий должен отразиться посредством блоков, чтобы найти, загрузить и использовать плагины для Вашего приложения.
Мы также используем отражение экстенсивно в Шаблоне "фабрика". Методы создания объекта могут быть отмечены с атрибутами с, найдены с отражением и затем созданы нашей фабрикой.
На самом деле любое использование атрибутов использует отражение. При создании собственных атрибутов Вы будете использовать отражение для нахождения их на коде.
Мы также используем отражение, чтобы сгенерировать код. У нас есть клиент-серверное приложение, которое использует дистанционную работу.NET. Мы отмечаем вызовы в наш сервер с нашими собственными атрибутами и затем используем отражение, чтобы найти их и сгенерировать весь наш коммуникационный код, блок для сервера и один для клиента. Это сохраняет всю механическую работу ручного добавления в том же входе, синхронизации и коде дистанционной работы везде.
Отражение может помочь Вам написать больше удобного в сопровождении кода и уменьшить объем кода для некоторой определенной задачи.
Т.е. Вы могли записать простую оболочку или при помощи большого количества из если операторы, чтобы соответствовать команде или использовать отражение для генерации словаря, содержащего делегатов к методам, отметили с определенным пользовательским атрибутом для представления ее пользователю. С отражательным подходом такой метод только должен быть добавлен в единственном месте, и отражение заботится об остальных.
Это имеет вид загруженного вопроса, но некоторые причины приходят на ум:
Тестирование закрытых методов в модульных тестах.
Используя его к виду динамично с linq при имении только имени свойства в наличии.
Заполните свойство объекта на лету. Возможно, потому что Вы соответствуете свойству к datarow имени столбца или возможно и xml элемент. (Могло бы быть устаревшее использование),
Создание класса на лету.
Другое общее использование для отражения является сериализацией. .NET использует отражение для нахождения информации о типе при сериализации объектов. Приложение направления деятельности могло бы хотеть обеспечить пользовательскую функцию импорта/экспорта данных, и сериализация через отражение является одним способом выполнить это.
Я определил атрибут DisplayName для своего Перечисления, таким образом, Вы заканчиваете:
перечисление {[DisplayName ("Открытый") открытый, [DisplayName ("Запрос на Кавычку") RFQ
}
Теперь я могу с помощью отражения для вытаскивания правильной маркировки. Это удобно для управляемых данными приложений. Можно также поместить ключ ресурса там, таким образом, можно локализовать его.
Я буду использовать отражение, если я захочу обработать что-то на основе, он - тип. Таким образом, если я - переданный Тип A, идут оставленные, иначе идут право.
Можно создать пользовательские интерфейсы динамично на основе DTO, если Вы, оказывается, используете их.
при принятии "приложением направления деятельности" Вы имеете в виду "простое Приложение типа CRUD", затем Вы определили объем достаточно узко, что Вам, вероятно, не нужно отражение, чтобы заставить его работать - или даже сделать его лучше
отражение делает язык "закрытым" в том смысле, что операторы на языке могут использоваться для исследования операторов на языке; контрастируйте это с языком C, который не имеет никакого отражения. Хотите позвать функцию по имени в C? Не может сделать этого, никакое отражение.
Типичное приложение C должно сделать это? Нет, или редко.
Так же на Ваш вопрос, "Почему я использовал бы Отражение в бизнес-приложении?" ответ - то, что Вы, вероятно, не были бы, в то время как у других может быть умное использование для него, но на самом деле для основных Приложений типа CRUD это не "необходимо".
это не означает, что Вы не должны понимать это; знание, что это и что это может сделать, может означать различие между записью тонны хрупкого кода или небольшого изящного отражающего кода, если Вы когда-либо встречаетесь с чем-то более трудным или сложным, чем 'приложение направления деятельности' ;-)
Это делает Шаблон "фабрика" очень легким расшириться, потому что можно поместить информацию в файл конфигурации или базу данных (и сама Фабрика становится кодом, которого Вы никогда не должны касаться).
Вероятно, использование:
HyperDescriptor
Reflection.Emit
)Если Вы хотите реализовать Шаблон "фабрика", и избегать необходимости перекомпилировать код каждый раз Вы добавляете новый компонент на фабрике, Отражение может быть единственной опцией.
Мы используем отражение во многих местах, включая:
Вот просто некоторые из многих образцов:
Мы используем отражение, чтобы смочь отобразить средства управления от уровня UI непосредственно к свойствам бизнес-объекта в datalayer. Это позволяет Вам иметь 'универсальную' функцию на базовой форме где-нибудь, что 'автоматический заполняет' ФИЛИАЛ с данными UI и наоборот, не имея необходимость писать код для каждого управления и свойства на форме и объекте.