我正在尝试从作为主对象一部分的列表中的对象获取值。
我有一个主要对象,其中包含可以是集合的各种属性。
现在我正试图弄清楚如何访问对象中包含的通用列表。
///<summary>
///Code for the inner class
///</summary>
public class TheClass
{
    public TheClass();
    string TheValue { get; set; }
} //Note this class is used for serialization so it won't compile as-is
///<summary>
///Code for the main class
///</summary>
public class MainClass
{
    public MainClass();
    public List<TheClass> TheList { get; set; }
    public string SomeOtherProperty { get; set; }
    public Class SomeOtherClass { get; set }
}
public List<MainClass> CompareTheValue(List<object> MyObjects, string ValueToCompare)
{ 
    //I have the object deserialised as a list
    var ObjectsToReturn = new List<MainClass>();
    foreach(var mObject in MyObjects)
    {
        //Gets the properties
        PropertyInfo piTheList = mObject.GetType().GetProperty("TheList");
        object oTheList = piTheList.GetValue(MyObject, null);
        //Now that I have the list object I extract the inner class 
        //and get the value of the property I want
        PropertyInfo piTheValue = oTheList.PropertyType
                                          .GetGenericArguments()[0]
                                          .GetProperty("TheValue");
        //get the TheValue out of the TheList and compare it for equality with
        //ValueToCompare
        //if it matches then add to a list to be returned
        //Eventually I will write a Linq query to go through the list to do the comparison.
        ObjectsToReturn.Add(objectsToReturn);
    }
return ObjectsToReturn;
}
我尝试SetValue()在此上使用 with MyObject ,但它出错(解释):
对象不是类型
private bool isCollection(PropertyInfo p)
{
    try
    {
        var t = p.PropertyType.GetGenericTypeDefinition();
        return typeof(Collection<>).IsAssignableFrom(t) ||
               typeof(Collection).IsAssignableFrom(t);
    }
    catch
    {
        return false;
    }
    }
}