Понимание отражения

Я недавно запустил работу в новой компании и веб-приложении .NET, которое мы имеем, создается с помощью отражения. Я только был вне школы в течение года и не работал с этим понятием. После изучения кода... похоже, что существует единственный внутренний интерфейс текстового объекта, который имеет приблизительно 20 классов, которые наследовались ему. много дженерика получает и устанавливает

На поверхности это похоже на стандартное наследование мне. Я предполагаю, что мой вопрос, что делает это отражение? Это, потому что интерфейс не со строгим контролем типов?

Спасибо

6
задан sdmiller 24 April 2010 в 18:35
поделиться

4 ответа

Сначала прочтите о Reflection в Википедии. Затем ознакомьтесь с пространством имен Reflection в MSDN.

Думаю, я знаю общую закономерность, с которой вы сталкиваетесь. Потребность в отражении возникает, поскольку пользователь может указать тип и имена членов во время выполнения. Затем программа должна использовать отражение, чтобы сопоставить предоставленные имена с фактическими членами типа.

Вообще говоря, если ваша программа проверяет типы объектов во время выполнения , то вы используете отражение.

BTW, Strong и Weak являются атрибутами системы типов языка, но не какого-либо приложения или структуры (например, интерфейса и т. Д.), Написанной с использованием этот язык. т.е. «Многие считают C # строго типизированным языком» .

9
ответ дан 10 December 2019 в 00:35
поделиться

«Отражение: способность обнаруживать состав типа (например, класс, интерфейс, структуру, перечисление или делегат) во время выполнения».

Я считаю, что ваши коллеги имеют в виду то, как они создают экземпляры ваших объектов. Я уверен, что ваши объекты построены с использованием стандартного наследования.

0
ответ дан 10 December 2019 в 00:35
поделиться

Кто сказал, что он «построен с использованием отражения»? Ваши коллеги?

Вообще говоря, использование отражения означает проверку или генерацию кода во время выполнения.

Если приложение использует отражение, оно, вероятно, использует что-то из пространства имен System.Reflection, поэтому, чтобы почувствовать, в какой степени используется отражение, вы можете удалить ссылки на это пространство имен и посмотреть, что ломается ...

1
ответ дан 10 December 2019 в 00:35
поделиться

a) Приложение не может быть создано с использованием отражения. Отражение, скорее всего, является частью приложения. Точно так же, как наследование в случае одного родительского и 20 дочерних классов, как вы упомянули.

б) Отражение используется для анализа объекта во время выполнения. Подразумевая, что у вас есть ссылка на объект типа объекта и, возможно, этот тип объекта может отличаться, и вы хотите во время выполнения видеть все свойства, тогда используется отражение. Другой случай - когда вам нужно вызвать метод, но вы действительно не знаете, какой метод и все его общие.

c) поскольку это приложение .net, в случае vb.net - строка с чем-то вроде objectinstance. GetType .somemethod будет указывать на отражение. проверьте

0
ответ дан 10 December 2019 в 00:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: