我有一个只有类名的字符串列表。我需要使用 Activator 创建它们的实例,但它们都可以位于不同的命名空间中。将来可以将类移到另一个 namespace 中,因此我不能对其进行硬编码。
最佳答案
如果您知道在不同的命名空间中永远不会有多个具有相同名称的类型,您可以迭代程序集中的所有类型并根据类型名称进行过滤。例如,这有效:
var typenames = new[] { "String", "Object", "Int32" };
var types = typeof(object).GetTypeInfo().Assembly
.GetTypes()
.Where(type => typenames.Contains(type.Name))
.ToArray(); // A Type[] containing System.String, System.Object and System.Int32
如果您有多个具有相同名称的类型,这不一定会中断,但您会在列表中获得所有类型。
关于c# - 如何在.net core中使用反射按名称查找类的命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38308713/