【问题标题】:How to set Property value using Reflection?如何使用反射设置属性值?
【发布时间】:2013-07-03 20:20:22
【问题描述】:

我尝试构建一个通用方法,它使用反射获取类和设置值并返回一个类类型。

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

设置值后如何返回一个类?

【问题讨论】:

    标签: c#-4.0 asp.net-mvc-4 generic-programming system.reflection


    【解决方案1】:

    好的。我解决它。检查下面的代码,它可能对某人有帮助。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多