我需要获取给定命名空间中的所有可用类。
以下是我所做的
在我的Index方法( XyzController.cs )中,我添加了这一行。
var classesList = Assembly.GetExecutingAssembly().GetTypes().Where(t => t.Namespace == "PATH.TO.HAMESPACE").ToList()不幸的是,这没有给我任何记录/课程。
但是,当我在同一个名称空间(即PATH.TO.HAMESPACE )中创建一个新类时。用同样的密码。然后从控制器调用这个类,代码返回正确的类列表。
如何从控制器运行此代码以获得PATH.TO.HAMESPACE中的所有可用类
发布于 2016-08-19 21:05:16
过高的方法,但这可能有效:
AppDomain.CurrentDomain.GetAssemblies()
    .SelectMany(a => a.GetTypes())
    .Where(t => t.Namespace == "Namespace");或者(和),您应该尝试显式加载程序集。用Assembly.Load或Assembly.LoadFrom。
Assembly.Load("your assembly fullname")
    .GetTypes()
    .Where(t => t.Namespace == "Namespace");发布于 2016-08-19 21:21:38
而不是GetAssembly(typeof(PATH.TO.HAMESPACE.SampleClass)),而不是GetExecutingAssembly()
问题是,当您在控制器中执行程序集时,您所需要的类的程序集并不相同,而当您创建该类时,组装才是正确的。
因此,您需要获得正确的程序集,然后对其进行过滤。
https://stackoverflow.com/questions/39047442
复制相似问题