我尝试构建一个Generic方法,它使用反射来获取类和设置值并返回一个类类型。
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;
}
如何在设定值后返回一个类?
答案 0 :(得分: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;
}