【发布时间】:2014-12-03 11:45:26
【问题描述】:
例如...
using System;
using System.IO;
namespace Whatever
{
public class SomeClass
{
}
}
如果这被编译到类库 mylibrary.dll 中,我希望能够使用反射来加载 mylibrary.dll 并找出它是否引用了 @ 987654324@命名空间。
我尝试过使用Assembly.GetReferencedAssemblies,然后在这些程序集中识别命名空间,但这将始终为我提供这些程序集中定义的所有命名空间,无论它们是否在 mylibrary.dll 中实际引用时间>。由于System.IO 与System 和许多其他重要的命名空间共享一个程序集,这将不起作用。
我想到的另一件事是找出是否引用了来自该命名空间的类,但我找不到使用反射的方法。
这是针对插件系统的,其想法是通过在引用了这些命名空间时拒绝加载库来防止插件使用某些命名空间,例如System.IO。
【问题讨论】:
-
您是否至少从简单的谷歌搜索开始C# reflection find namespace
-
您的示例代码没有引用
System.IO命名空间,因为它不使用该命名空间中的任何类。 -
是的,我已经做到了。这些都返回由名称空间定义的类。我需要知道引用了哪些命名空间。完全不同的事情,我无法找到如何使用谷歌来做到这一点。因此,感谢您在没有完全阅读和理解我的问题的情况下投下反对票。]
-
@CrappyCodingGuy 我们非常了解您的问题。您是否尝试过 Jon Skeet 的解决方案 here(DJ KRAZE 搜索的第一个结果)?
-
using语句中指定的命名空间不是引用。仅引用 程序集。此外,using语句只是设计时功能。对于 using 语句,编译的 MSIL 中没有任何内容
标签: c# .net reflection namespaces