我有一个仅包含类名称的字符串列表。我需要使用 Activator 创建它们的实例,但它们都可以位于不同的命名空间中。类将来可以移动到另一个名称空间中,因此我无法对其进行硬编码。
如果您知道永远不会有多个具有相同名称的类型驻留在不同的命名空间中,则可以迭代程序集中的所有类型并过滤类型名称。例如,这有效:
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
如果您有多个具有相同名称的类型,这不一定会破坏,但您会在列表中获得所有这些类型。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)