我遇到了一些非常复杂的事情。如果有人可以帮我,我将有义务。1)我必须在编译时创建一个未知类型的List 。我已经实现了。 Type customList = typeof(List<>).MakeGenericType(tempType); object objectList = (List<object>)Activator.CreateInstance(customList);“ temptype”是已经获取的自定义类型。2)现在我有了PropertyInfo对象,该对象是我必须从中复制所有项目到刚刚创建的实例“ objectList”的列表的对象3)然后,我需要迭代并访问“ objectList”的项目,就好像它是“ System.Generic.List”一样。简而言之,使用反射,我需要提取一个属性,该属性是一个列表,并将其作为实例供进一步使用。您的建议将不胜感激。提前致谢。Umair (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 许多.NET通用集合类也实现了它们的非通用接口。我会利用这些来编写您的代码。// Create a List<> of unknown type at compile time.Type customList = typeof(List<>).MakeGenericType(tempType);IList objectList = (IList)Activator.CreateInstance(customList);// Copy items from a PropertyInfo list to the object just createdobject o = objectThatContainsListToCopyFrom;PropertyInfo p = o.GetType().GetProperty("PropertyName");IEnumerable copyFrom = p.GetValue(o, null);foreach(object item in copyFrom) objectList.Add(item); // Will throw exceptions if the types don't match.// Iterate and access the items of "objectList"// (objectList declared above as non-generic IEnumerable)foreach(object item in objectList) { Debug.WriteLine(item.ToString()); } (adsbygoogle = window.adsbygoogle || []).push({});
09-04 04:19