我需要将反射创建的对象添加到通用列表中。在编译时我不知道这个对象的确切类型或泛型列表的类型,但我可以确保类型匹配。
我发现很多帖子都在谈论类似的问题,但它们要么不需要通用列表,要么在编译时就知道类型。
任何人都可以帮忙吗?
我需要将反射创建的对象添加到通用列表中。在编译时我不知道这个对象的确切类型或泛型列表的类型,但我可以确保类型匹配。
我发现很多帖子都在谈论类似的问题,但它们要么不需要通用列表,要么在编译时就知道类型。
任何人都可以帮忙吗?
Ifl
是您的通用列表,并且o
是您的对象:
l.GetType().GetMethod("Add").Invoke(l, new object[] { o });
根据jgauffin的建议,您可以执行以下测试以确保您可以将对象添加到列表中:
if (l.GetType().GetGenericArguments()[0].IsAssignableFrom(o.GetType()))
{
l.GetType().GetMethod("Add").Invoke(l, new object[] { o });
}
使用 SomeObject.GetType() 获取其类型:
MyClass t1 = new MyClass();
Type t = t1.GetType();