So let me begin with a simple bit of code that may prove useful to some people.
I had a problem where I was using reflection that required a method to be invoked. This method returned a generic list of items. The problem was that using reflection the type that was returned from the method was "System.Collections.Generic.List`1[T]", and I needed a way to loop through the actual items in the list, in order to check types and property values.
The solution is pretty straightforward. There is a method in a generic list object that allows you to retrieve a single item based on it's index. The method name is "get_Item". Below is a small section of C# code that will show you how it works:
// Create an instance of the type you require
Type myType = "AssemblyName.TypeName, AssemblyName";
object instance = Activator.CreateInstance(typeof(myType));
// Invoke the method
MethodInfo method = myType.GetType().GetMethod("MethodName");
// The list object is of type "System.Collections.Generic.List`1[T]"
object list = method.Invoke(instance, null);
// Get the list item count
int listCount = (int)list.GetType().GetProperty("Count").GetValue(list, null);
// Loop though generic list
for (int index = 0; index <= listCount; index++)
{
// Get an instance of the item in the list
object item = list.GetType().GetMethod("getItem").Invoke(list, new object[] { index });
// Now you have an instance of the item in the generic list
//....
// TODO: Place additional code here/
//....
}
Hope that may help some of you out there. :)