c# - 如何在.net core中使用反射按名称查找类的命名空间?

标签 c# reflection asp.net-core

我有一个只有类名的字符串列表。我需要使用 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/

相关文章:

c# - 并非所有代码路径都会返回一个值 - 有什么问题吗?

c# - 在 Xamarin MAC 应用程序中检测 Wifi SSID

c# - NetTcpBinding() 与 TransferMode.Streamed

c# - 如何使用反射获取变量名?

asp.net-core - ASP.NET 5 中 RegisterObject/QueueBackgroundWorkItem 的等价物是什么

c# - Dns.GetHostEntry 返回本地主机名而不是 DNS 已知的名称

java - 确定字段的访问级别

json - Go:指向接口(interface){} 的指针丢失底层类型

asp.net-core - ASP .Net Core 谷歌身份验证

asp.net-mvc - wwwroot 服务页面不是 MVC6