我来到此页面是为了确认我在搜索与输入到 Windows 应用程序的主 Visual Studio 项目属性页面中的根命名空间相对应的程序集属性时没有忽略任何内容。
由于我有一个想法来解决将我带到此页面的用例的问题,并且我预计至少其他一些人会从我的发现中受益,所以我在进行研究时保持页面打开。
正如我所怀疑的,将有意义的,更不用说超级有用的命名空间与入口程序集相关联是相对容易的。以下长表达式返回在任何 Windows 应用程序的Program.cs模块中定义的Program类的命名空间:
System.Reflection.Assembly.GetEntryAssembly().EntryPoint.DeclaringType.Namespace
以下 C# 语句从应用程序域中的任何位置执行,甚至通过到达 DLL 的方法调用,报告入口点例程的名称及其命名空间。
Console.WriteLine (
"Namespace of Entry Point Routine {0} = {1} " ,
System.Reflection.MethodBase.GetCurrentMethod ( ).Name ,
System.Reflection.Assembly.GetEntryAssembly ( ).EntryPoint.DeclaringType.Namespace );
对于名为 OperatingParameters_Demo.exe 的控制台模式程序,其根命名空间为OperatingParameters_Demo,上述语句产生以下输出。
Namespace of Entry Point Routine Main = OperatingParameters_Demo
此表达式的实际用途是您可以使用它来构造条目程序集的Properties.Settings和Properties.Resources命名空间的绝对(完全限定)名称。
- 从应用程序中的任何位置访问设置意味着您可以搜索设置,其名称在运行时之前是未知的。
- 从应用程序中的任何位置访问资源意味着存储在条目程序集或其附属资源程序集中的字符串资源可以从整个应用程序域访问,即使它们的名称在运行时之前是未知的。
我几乎完成了一个应用程序,它利用这种技术来显示存储在资源字符串中的参数名称,这些参数名称基于从参数的内部名称派生的资源名称。这是该工具演示的通用程序参数处理库的核心。
这个演示项目始于我开始使用程序员工具将 C/C++ 头文件导入项目目录,这样我就可以将自包含项目部署到 GitHub 中,即使头文件的主副本存储在其他地方,因为它们由数十个项目共享。当它的参数解析引擎接近完成时,我意识到我非常接近拥有我多年来一直想要的通用操作参数解析器和后备存储。C/C++ 标头导入器最终将被发布。但是,目前只完成了它的解析引擎。由于它本身很有用,我打算先发布它。请继续关注代码项目和GitHub。