C# Apps Reflection introduction

2017.06.25 15:16

졸리운_곰 조회 수:147

Reflection introduction

 

Wikipedia says that "In computer science, reflection is the process by which a computer program can observe and modify its own structure and behaviour". This is exactly how Reflection in C# works, and while you may not realize it at this point, being able to examine and change information about your application during runtime, offers huge potential. Reflection, which is both a general term, as well as the actual name of the reflection capabilities in C#, works very, very well, and it's actually not that hard to use. In the next couple of chapters, we will go more into depth about how it works and provide you with some cool examples, which should show you just how useful Reflection is. 

However, to get you started and hopefully interested, here is a small example. It solves a question that I have seen from many newcomers to any programming language: How can I change the value of a variable during runtime, only by knowing its name? Have a look at this small demo application for a solution, and read the next chapters for an explanation of the different techniques used.

using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;

namespace ReflectionTest
{
    class Program
    {
        private static int a = 5, b = 10, c = 20;

        static void Main(string[] args)
        {
            Console.WriteLine("a + b + c = " + (a + b + c));
            Console.WriteLine("Please enter the name of the variable that you wish to change:");
            string varName = Console.ReadLine();
            Type t = typeof(Program);
            FieldInfo fieldInfo = t.GetField(varName, BindingFlags.NonPublic | BindingFlags.Static);
            if(fieldInfo != null)
            {
                Console.WriteLine("The current value of " + fieldInfo.Name + " is " + fieldInfo.GetValue(null) + ". You may enter a new value now:");
                string newValue = Console.ReadLine();
                int newInt;
                if(int.TryParse(newValue, out newInt))
                {
                    fieldInfo.SetValue(null, newInt);
                    Console.WriteLine("a + b + c = " + (a + b + c));
                }
                Console.ReadKey();
            }
        }
    }
}

Try running the code and see how it works. Besides the lines where we use the actual Reflection, it's all very simple. Now, go to the next chapter for some more theory on how it works.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

 

[출처] http://csharp.net-tutorials.com/reflection/introduction/

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
44 Machine Learning with ML.Net and C#/VB.Net file 졸리운_곰 2018.08.16 997
43 Build Simple AI .NET Library - Part 6 - ML Algorithms file 졸리운_곰 2018.03.26 1102
42 Build Simple AI .NET Library - Part 5 - Artificial Neural Networks file 졸리운_곰 2018.03.26 1046
41 Build Simple AI .NET Library - Part 4 - Beyond Perceptron file 졸리운_곰 2018.03.26 293
40 Build Simple AI .NET Library - Part 3 - Perceptron file 졸리운_곰 2018.03.26 238
39 Build Simple AI .NET Library - Part 2 - Machine Learning Introduction file 졸리운_곰 2018.03.26 309
38 Build Simple AI .NET Library - Part 1 - Basics First file 졸리운_곰 2018.03.26 293
37 텍스트 파일을 한 번에 한 줄씩 읽기(Visual C#) 졸리운_곰 2017.08.30 354
36 마우스 클릭 매크로 (C# 버전) file 졸리운_곰 2017.07.30 1401
35 Assembly Manipulation and C# / VB.NET Code Injection file 졸리운_곰 2017.07.01 419
34 Snoop is the open source WPF spying utility file 졸리운_곰 2017.07.01 263
33 Hawkeye - The .Net Runtime Object Editor Hawkeye - The .Net Runtime Object Editor file 졸리운_곰 2017.07.01 151
32 .NET Object Spy and InvokeRemote file 졸리운_곰 2017.07.01 227
31 C#에서의 리플렉션(Reflection) 졸리운_곰 2017.07.01 340
30 Loading an assembly using Reflection and invoking static methods from it file 졸리운_곰 2017.07.01 154
29 => 연산자(C# 참조) file 졸리운_곰 2017.06.25 191
28 대리자 사용(C# 프로그래밍 가이드) 졸리운_곰 2017.06.25 248
27 Using C# reflection to call a constructor 졸리운_곰 2017.06.25 175
» Reflection introduction 졸리운_곰 2017.06.25 147
25 C# - Interfaces 졸리운_곰 2017.06.25 168
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED