这是我想要得到的
(IList<Foo>)listPropertyInfo.GetValue(item)
这是我如何获得Foo类型
listPropertyInfo.GetValue(item).GetType().GenericTypeArguments[0]
这是我试过但不能成功的
Convert.ChangeType(listPropertyInfo.GetValue(item),IList<listPropertyInfo.GetValue(item).GetType().GenericTypeArguments[0]>)
这也是
((typeof(IList<>).MakeGenericType(listPropertyInfo.GetValue(item).GetType().GenericTypeArguments.Single())))(listPropertyInfo.GetValue(item))
这是我试图实现的方法
public static void trigger(IList<T> result) { foreach (var item in result) { foreach (var listPropertyInfo in typeof(T).GetProperties().ToList().FindAll(x => x.PropertyType.Name == typeof(IList<>).Name)) { trigger((IList<Foo>)listPropertyInfo.GetValue(item)); } } }
解决方法
我这样解决了
IList targetList = (IList)listPropertyInfo.GetValue(item); Type foo = targetList.GetType().GenericTypeArguments.Single(); Type unboundGenericType = typeof(READ<>); Type boundGenericType = unboundGenericType.MakeGenericType(foo); MethodInfo doSomethingMethod = boundGenericType.GetMethod("trigger"); object instance = Activator.CreateInstance(boundGenericType); doSomethingMethod.Invoke(instance,new object[] { targetList,f,properties });
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。