Ответ 1
Отражение - это способность запрашивать и взаимодействовать с системой типов динамическим способом.
В списке ответов .Net. (включая хорошие) содержится вопрос: "Что такое отражение?". Недавно мне было предложено ответить на этот вопрос в контексте 5 вопросов, технических испытаний, которые должны были быть завершены за 15 минут на листе пустой бумаги, переданной мне в кафетерии. Мой ответ шел по строкам "Отражение" позволяет вам найти методы, свойства и поля любого объекта во время выполнения ". В ретроспективе, мой ответ объясняет, как вы можете использовать отражение, но это не объясняет, что такое отражение. На мой взгляд, моего ответа было достаточно, чтобы передать, что я понимаю, что отражение для, но не дошло до того, чтобы объяснить, что отражение .
Поэтому, пожалуйста, в контексте .Net, в ваших собственных сжатых словах, определите, что Reflection . Не тратьте больше трех минут на ответ. Не обращайтесь к документации .Net, мы все это видели.
Отражение - это способность запрашивать и взаимодействовать с системой типов динамическим способом.
форма интроспекции, то есть возможность писать код, который запрашивает код
Отражение - это знание CLR объектов уровня кода, таких как имена классов, методы и т.д., которые отображаются через API, а именно System.Reflection, что позволяет разработчику использовать информацию о времени выполнения этой информации в своем коде.
Нарушение правила. Я правильно отредактировал этот ответ из его первоначальной формы.
Отражение - это способность программы обрабатывать себя как данные.
Отражение похоже на морское наблюдение за кодом.
Во время компиляции языка .Net компилятор помещает информацию о программе в файл программы. Эта информация может использоваться самой программой или другими программами, чтобы узнать, какие классы содержит программа, каковы их методы, свойства, поля и события. Классы и их методы, свойства и т.д. Также могут быть использованы посредством отражения, даже если другая программа ничего не знает о них перед запуском. Это позволяет различным программам быть слабо связанными и делает возможным всевозможные захватывающие программы. Отражение также можно использовать для создания дополнительных классов в запущенных программах или в файлах программ.
Мне нравится ваш ответ, но я также хотел бы упомянуть, что Reflection также является способом получения/настройки частных/защищенных полей/свойств, которые иначе не были бы доступны во время выполнения.
Отражение - это возобновление кода.
Отражение - это как метаданные, так и промежуточный язык Microsoft (MSIL) вместе, завернутый в переносимый файл Exutable (PE), и этот доступ можно получить во время выполнения с помощью механизма.
Отражение - это не что иное, как возможность доступа к методу других dll, которые не были включены в ваш проект (может быть система или ваш собственный) в динамическом режиме. Также полезно избегать проблем с круговой зависимостью.
Отражение - это способность действовать как БОГ ( G eneral O perations D; ) - вы можете "видеть" внутренности сборки и выполнять различные действия (System.Reflection), специально разработанные для выполнения, например запросы для типов и их членов, поиск интерфейсов или атрибутов, типы экземпляров, неизвестные во время компиляции и даже создайте новые типы (System.Reflection.Emit).
Используя Reflection в С#, вы можете узнать подробности объекта, метода и создать объекты и вызвать методы во время выполнения.
using System;
using System.Reflection;
public class MyClass
{
public virtual int AddNumb(int numb1,int numb2)
{
int result = numb1 + numb2;
return result;
}
}
class MyMainClass
{
public static int Main()
{
// Create MyClass object
MyClass myClassObj = new MyClass();
// Get the Type information.
Type myTypeObj = myClassObj.GetType();
// Get Method Information.
MethodInfo myMethodInfo = myTypeObj.GetMethod("AddNumb");
object[] mParam = new object[] {5, 10};
// Get and display the Invoke method.
Console.Write("\nFirst method - " + myTypeObj.FullName + " returns " +
myMethodInfo.Invoke(myClassObj, mParam) + "\n");
return 0;
}
}
ниже код получит информацию о типе:
Type myTypeObj = Type.GetType("MyClass");
Ниже приведенный ниже фрагмент кода получит информацию о методе
Methodinfo myMethodInfo = myTypeObj.GetMethod("AddNumb");
В следующем фрагменте кода вызывается метод AddNumb:
myMethodInfo.Invoke(myClassObj, mParam);