Computer >> 컴퓨터 >  >> 프로그램 작성 >> C#

C#에서 속성 값을 동적으로 가져오는 방법은 무엇입니까?

<시간/>

리플렉션을 사용하여 속성 값을 동적으로 가져올 수 있습니다.

리플렉션은 어셈블리, 모듈 및 유형을 설명하는 객체(유형 유형)를 제공합니다. 리플렉션을 사용하여 유형의 인스턴스를 동적으로 생성하거나 유형을 기존 객체에 바인딩하거나 기존 객체에서 유형을 가져와 해당 메소드를 호출하거나 해당 필드 및 속성에 액세스할 수 있습니다. 코드에서 속성을 사용하는 경우 리플렉션을 통해 속성에 액세스할 수 있습니다.

System.Reflection 네임스페이스와 System.Type 클래스는 .NET Reflection에서 중요한 역할을 합니다. 이 두 가지는 함께 작동하며 유형의 다른 많은 측면을 반영하도록 합니다.

예시

using System;
using System.Text;
   namespace DemoApplication {
      public class Program {
         static void Main(string[] args) {
            var employeeType = typeof(Employee);
            var employee = Activator.CreateInstance(employeeType);
            SetPropertyValue(employeeType, "EmployeeId", employee, 1);
            SetPropertyValue(employeeType, "EmployeeName", employee, "Mark");
            GetPropertyValue(employeeType, "EmployeeId", employee);
            GetPropertyValue(employeeType, "EmployeeName", employee);
            Console.ReadLine();
         }
         static void SetPropertyValue(Type type, string propertyName, object instanceObject, object value) {
            type.GetProperty(propertyName).SetValue(instanceObject, value);
         }
         static void GetPropertyValue(Type type, string propertyName, object instanceObject) {
            Console.WriteLine($"Value of Property {propertyName}:                   {type.GetProperty(propertyName).GetValue(instanceObject, null)}");
         }
      }
      public class Employee {
         public int EmployeeId { get; set; }
         public string EmployeeName { get; set; }
      }
   }

출력

위 코드의 출력은

Value of Property EmployeeId: 1
Value of Property EmployeeName: Mark

위의 예에서 유형 및 속성 이름을 가져옴으로써 Reflection을 사용하여 Employee 속성 값이 설정되었음을 알 수 있습니다. 마찬가지로 속성 값을 가져오기 위해 GetProperty()를 사용했습니다. Reflection 클래스의 메소드 이것을 사용하여 런타임 동안 속성 값을 가져올 수 있습니다.