C\#속성 이름 문자열 을 통 해 대상 속성 값 을 가 져 오고 설정 합 니 다.

본 논문 의 사례 는 C\#속성 이름 문자열 을 통 해 대상 속성 값 을 얻 고 설정 하 는 작업 을 설명 합 니 다.여러분 께 참고 하 시기 바 랍 니 다.구체 적 으로 다음 과 같 습 니 다.
\#반사 로 대상 속성 값 을 획득 하고 속성 값 을 설정 합 니 다.
0.클래스 정의

 public class User
 { 
  public int Id { get; set; }
  public string Name { get; set; }
  public string Age { get; set; }
 }

1.속성 명(문자열)을 통 해 대상 속성 값 가 져 오기

 User u = new User();
 u.Name = "lily";
 var propName = "Name";
 var propNameVal = u.GetType().GetProperty(propName).GetValue(u, null);
 
 Console.WriteLine(propNameVal);// "lily"

2.속성 명(문자열)을 통 해 대상 속성 값 을 설정 합 니 다.

 User u = new User();
 u.Name = "lily";
 var propName = "Name";
 var newVal = "MeiMei";
 u.GetType().GetProperty(propName).SetValue(u, newVal);
 
 Console.WriteLine(propNameVal);// "MeiMei"

\#대상 의 모든 속성 이름과 유형 가 져 오기
클래스 의 대상 을 통 해 실현

 User u = new User();

 foreach (var item in u.GetType().GetProperties())
 {
  Console.WriteLine($"propName:{item.Name},propType:{item.PropertyType.Name}");
 }
 // propName: Id,propType: Int32
 // propName:Name,propType: String
 // propName:Age,propType: String

클래스 를 통 해 실현

 foreach (var item in typeof(User).GetProperties())
 {
  Console.WriteLine($"propName:{item.Name},propType:{item.PropertyType.Name}");
 }
 // propName: Id,propType: Int32
 // propName:Name,propType: String
 // propName:Age,propType: String

\#대상 이 어떤 속성 을 포함 하 는 지 판단 합 니 다.

 static void Main(string[] args)
 {
  User u = new User();
  bool isContain= ContainProperty(u,"Name");// true
 }


 public static bool ContainProperty( object instance, string propertyName)
 {
  if (instance != null && !string.IsNullOrEmpty(propertyName))
  {
   PropertyInfo _findedPropertyInfo = instance.GetType().GetProperty(propertyName);
   return (_findedPropertyInfo != null);
  }
  return false;
 }

확장 방법 으로 봉인 하기

 public static class ExtendLibrary
 {
  /// <summary>
  ///                  
  /// </summary>
  /// <param name="instance">object</param>
  /// <param name="propertyName">       </param>
  /// <returns>    </returns>
  public static bool ContainProperty(this object instance, string propertyName)
  {
   if (instance != null && !string.IsNullOrEmpty(propertyName))
   {
    PropertyInfo _findedPropertyInfo = instance.GetType().GetProperty(propertyName);
    return (_findedPropertyInfo != null);
   }
   return false;
  }
 }
 static void Main(string[] args)
 {
  User u = new User();
  bool isContain= u.ContainProperty("Name");// true
 }

더 많은 C\#관련 내용 에 관심 이 있 는 독 자 는 본 사이트 의 주 제 를 볼 수 있다.
본 고 에서 말 한 것 이 여러분 의 C\#프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기