Umm, it looks like you might be getting a little mixed up there and that would be the problem.
The PropertyInfo parameter "prop" (I would assume from your explanation) is used to access some property of the Object "o" that returns an object of type List<Item>, which is not an indexer (as in, it isn't a property that takes any arguments), so passing null for the arguments in the first prop.GetValue() line works fine and gets the list like it's supposed to.
However, then you attempt to use the PropertyInfo again on "o" to get at the elements of the list, which isn't working (and thus causing an exception) because it's attempting to pass an argument to a property that does not have any parameters.
Now, what you might have meant to do is make the second call to GetValue() with "lst" as the object rather than "o", but that still wouldn't work and would also throw an exception (of System.Reflection.TargetException, assuming o's type is not a subtype of List<Item>).
What I assume you were trying to do was to access the default property of the list object (i.e. the one that allows you to put list_name[0] to retrieve the first element), which means (I'm assuming you want to keep it generic, so I'm not going to suggest casting) that you'll need to create a new PropertyInfo that gets the property "Item" of the lst object's type (assuming the type uses the default name for the default property, which List does), then use that PropertyInfo with the call to GetValue() and pass "lst" instead of "o".
|