如何将通过反射获得的对象传递到模板
本文关键字:对象 反射 | 更新日期: 2023-09-27 18:00:59
所以我需要使用反射来获得一个类,因为它是一个私有类,这是我能想到的在该类型的对象上创建的唯一方法。然后我需要将该对象传递给template类。但是我不知道如何创建模板类。
例如:
Type privateClassType = (Assembly.LoadFile(x)).GetType("Namespace.privateClass");
var Object = Activator.CreateInstance(privateClassType);
现在在List这样的模板类中使用它
那么,我该如何实例化List,因为我找不到用privateClassType替换T的语法,或者任何其他方式,因为类是私有的,我无法访问它。
关于我如何宣布这份名单是正确的,有什么想法吗?
首先,在C#空间中,我们称它们为泛型,它们与C++模板截然不同。
其次,要关闭一个打开的泛型类型(即,具有尚未指定的类型参数的泛型类型(,请使用Type.MakeGenericType
:
Type openListType = typeof(List<>);
var closedListType = openListType.MakeGenericType(new[] { privateClassType });
object list = Activator.CreateInstance(closedListType);
// list is List<T> where typeof(T) == privateClassType
第三,您正在创建private
类的实例,这听起来很糟糕。它们是private
是有原因的。