1

리플렉션을 사용하여 클래스 및 값을 취하는 클래스를 생성하고 클래스 유형을 반환하는 일반 메소드를 작성하려고합니다.Reflection을 사용하여 속성 값을 설정하는 방법은 무엇입니까?

protected static T GetSecureModel<T>(T model) 
     { 
      T secureModel = default(T); 

      foreach (var property in model.GetType().GetProperties()) 
      { 

        if (string.CompareOrdinal(property.PropertyType.FullName, "System.String") == 0) 
        { 
         property.SetValue(property.Name, property.GetValue(model, null).ToString(), null); 
        } 
      } 

       return secureModel; 
} 

설정 값 후에 클래스를 반환하는 방법은 무엇입니까?

답변

2

확인. 나는 그것을 해결한다. 아래 코드를 확인하십시오. 누군가에게 도움이 될 수 있습니다.

protected static T GetSecureModel<T>(T model) 
     { 
      bool secureData = false; 

      T secureModel = default(T); 

      foreach (var property in model.GetType().GetProperties()) 
      { 
       if (property.GetValue(model, null) != null && property.GetValue(model, null).ToString() != _blankGuid && property.GetValue(model, null).ToString() != _zero) 
       { 
        if (string.CompareOrdinal(property.PropertyType.FullName, _uniqueIdentifier) == 0) 
        { 
         model.GetType().GetProperty(property.Name).SetValue(model, new Guid(Sanitizer.GetSafeHtmlFragment(property.GetValue(model, null).ToString())), null); 
        } 
        else if (string.CompareOrdinal(property.PropertyType.FullName, _numeric) == 0) 
        { 
         model.GetType().GetProperty(property.Name).SetValue(model, int.Parse(Sanitizer.GetSafeHtmlFragment(property.GetValue(model, null).ToString())), null); 
        } 
        else if (string.CompareOrdinal(property.PropertyType.FullName, _string) == 0) 
        { 
         model.GetType().GetProperty(property.Name).SetValue(model, Sanitizer.GetSafeHtmlFragment(property.GetValue(model, null).ToString()), null); 
        } 

        secureData = true; 
       } 

      } 

      if (secureData) 
      { 
       secureModel = model; 
      } 

      return secureModel; 
     } 
관련 문제