2016-02-26 2 views
1
  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; 
       .... } 

Как я могу получить значение свойства списка Типа, моя собственность в модели является типом списка для примера моя модель содержит список свойстваКак получить значение списка Типа собственности с использованием PropertyInfo

List<User> 

хочет создать фильтр и добавить к действию, на которых я могу проверить для потенциальной атаки Xss, содержит ли модель такого нападения

ответ

2

Вы действительно не нужна эта перегрузка со вторым параметром. То, что вам действительно нужно, это бросить 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

+0

что, если экземпляр и имя свойства не известно, я хотел создать это как родовую основу модели прошел –

+0

Если я правильно понимаю, вы хотите, чтобы получить T аргумент от собственности с помощью отражения и значения литого к этому типу , Проблема заключается в том, что параметры универсального типа выводятся во время компиляции. Все операции с отражением являются операциями реального времени, поэтому он предполагает, что мы не сможем использовать дженерики для работы с динамически извлеченными данными. – Fabjan

0

Проверить этот один.

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

 Смежные вопросы

  • Нет связанных вопросов^_^