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

OK. Я решаю это. Проверьте ниже код, это может быть полезно для кого-то.

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; 
     } 
Смежные вопросы