如何使用属性信息获取列表类型属性的值
本文关键字:属性 类型 列表 获取 何使用 信息 | 更新日期: 2023-09-27 18:36:13
private static void Getproperties(Object Model) {
Type objType = Model.GetType();
PropertyInfo[] properties = objType.GetProperties();
foreach (PropertyInfo property in properties)
{
object propValue;
//Checking if property is indexed
if(property.GetIndexParameters().Length ==0)
propValue = property.GetValue(Model,null);
else
{
// want to retrieve collection stored in property index not passing 0 index returning element at 0 location ,how can i get whole list
propValue = property.GetValue(objectModel,new Object[]{0});
}
var elems = propValue as IList;
.... }
如何获取列表类型的属性值,我在模型中的属性是列表类型,例如我的模型包含一个列表属性
List<User>
想要创建一个过滤器并添加到我可以检查潜在 Xss 攻击的操作中,模型是否包含任何此类攻击
你真的不需要第二个参数的重载。您真正需要的是将该方法返回object
转换回.GetValue()
类型List<T>
。例:
class MyClass
{
public List<int> MyProperty { get { return new List<int>() { 3, 4, 5, 6 }; } }
}
class Program
{
static void Main()
{
MyClass instance = new MyClass();
PropertyInfo info = instance.GetType().GetProperty("MyProperty");
List<int> another = info.GetValue(instance) as List<int>;
for (int i = 0; i < another.Count; i++)
{
Console.Write(another[i] + " ");
}
}
}
输出 : 3 4 5 6
检查这个。
List<string> sbColors = new List<string>();
Type colorType = typeof(System.Drawing.Color);
PropertyInfo[] propInfoList = colorType.GetProperties(BindingFlags.Static | BindingFlags.DeclaredOnly | BindingFlags.Public);
foreach (PropertyInfo c in propInfoList)
{
sbColors.Add(c.Name);
}