获取对列表的访问权限,该列表是课程中的一个字段

时间:2019-02-12 15:42:45

标签: c#

我正在使用c#实现我自己的ORM,我需要使所有方法和字段尽可能通用。

我已声明一个随机类。此类有两个字段,其中一个是列表(Person类和邻居列表)。

我想获取某些类实例的字段值。这是我要获取字段值的功能:函数(对象o)。

我可以轻松获得此人年龄的值,但是由于“调用”功能返回“对象”,因此无法遍历邻居列表。

class Person {
    private int _age {get; set; }
    private LinkedList<Neighbour> _neighbours {get; set;};
   ....
}
public void function(object o){
    Type type = o.GetType();

    PropertyInfo[] props = type.GetProperties(BindingFlags.NonPublic | BindingFlags.Instance);
    foreach (PropertyInfo prp in props)
    {
        MethodInfo strGetter = prp.GetGetMethod(nonPublic: true);
        var val =  strGetter.Invoke(o, null);
        // Here I want to iterate over "val", which contains value of the field (in my case: _neighbours)
    }
}
public int main(){
     function(new Person(/* age */, /*some LinkedList*/));
}

将其转换为:

    LinkedList<object> val = (LinkedList<object>) str.Getter.Invoke(0, null) 

无效,因为它说不能将类型'object'转换为'Neighbour'。

如何迭代该集合?

0 个答案:

没有答案