我有一个只包含类名的字符串列表,需要使用Activator创建它们的实例,但它们可能在不同的命名空间中。由于这些类可能会在未来移动到另一个命名空间,因此我不能硬编码命名空间。
我有一个只包含类名的字符串列表,需要使用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
typeof(object).GetTypeInfo().Assembly
来获取程序集。 - adem caglinvar type = assembly.GetTypes().FirstOrDefault(x => x.Name == name);
string
列表,或者可以使用Type
列表?如果只有string
,那么当存在多个具有相同名称的类型(在不同的命名空间中)时,你想如何处理这种情况? - Tomas Aschan