Computer >> Máy Tính >  >> Lập trình >> C#

Làm cách nào để tìm nạp động một giá trị thuộc tính trong C #?

Chúng ta có thể sử dụng Reflection để tìm nạp động một giá trị thuộc tính.

Reflection cung cấp các đối tượng (thuộc loại Type) mô tả các tập hợp, mô-đun và các loại. Chúng ta có thể sử dụng phản xạ để tạo động một thể hiện của một kiểu, liên kết kiểu với một đối tượng hiện có hoặc lấy kiểu từ một đối tượng hiện có và gọi các phương thức của nó hoặc truy cập các trường và thuộc tính của nó. Nếu chúng tôi sử dụng các thuộc tính trong mã của mình, sự phản chiếu sẽ cho phép chúng tôi truy cập chúng.

Không gian tên System.Reflection và lớp System.Type đóng một vai trò quan trọng trong .NET Reflection. Hai điều này hoạt động cùng nhau và cho phép chúng tôi phản ánh nhiều khía cạnh khác của một loại.

Ví dụ

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; }
      }
   }

Đầu ra

Đầu ra của đoạn mã trên là

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

Trong ví dụ trên, chúng ta có thể thấy rằng các giá trị thuộc tính Employee được đặt bằng cách sử dụng Reflection bằng cách lấy kiểu và tên thuộc tính. Tương tự để tìm nạp giá trị thuộc tính, chúng tôi đã sử dụng GetProperty () phương thức của lớp Reflection. Bằng cách sử dụng điều này, chúng tôi có thể tìm nạp giá trị của bất kỳ thuộc tính nào trong thời gian chạy.