Ell*_*mes 49 c# string namespaces
我正在编写一个需要程序命名空间的程序,但我似乎无法弄清楚如何检索它.我希望最终结果是在一个字符串中.
我能够找到关于这个主题的MSDN页面,但事实证明这对我自己没有帮助. http://msdn.microsoft.com/en-us/library/system.type.namespace.aspx
任何帮助,将不胜感激.该程序是用C#编写的.
编辑:对不起,伙计们,这不是一个控制台应用程序.
Joe*_*zer 83
这应该工作:
var myType = typeof(MyClass);
var n = myType.Namespace;
Run Code Online (Sandbox Code Playgroud)
写出控制台:
Type myType = typeof(MyClass);
Console.WriteLine("Namespace: {0}.", myType.Namespace);
Run Code Online (Sandbox Code Playgroud)
设置WinForm标签:
Type myType = typeof(MyClass);
namespaceLabel.Text = myType.Namespace;
Run Code Online (Sandbox Code Playgroud)
或者在相关类中创建一个方法并在任何地方使用:
public string GetThisNamespace()
{
return GetType().Namespace;
}
Run Code Online (Sandbox Code Playgroud)
Ill*_*ack 15
把它放到你的组件:
public static string GetCurrentNamespace()
{
return System.Reflection.Assembly.GetExecutingAssembly().EntryPoint.DeclaringType.Namespace;
}
Run Code Online (Sandbox Code Playgroud)
或者,如果您希望此方法位于程序使用的库中,请按以下方式编写:
[System.Runtime.CompilerServices.MethodImpl(MethodImplOptions.NoInlining)]
public static string GetCurrentNamespace()
{
return System.Reflection.Assembly.GetCallingAssembly().EntryPoint.DeclaringType.Namespace;
}
Run Code Online (Sandbox Code Playgroud)
如果你在命名空间中有x类的项,你可以使用:AB
string s = x.GetType().Namespace;
Run Code Online (Sandbox Code Playgroud)
不s包含"B"
您还可以使用x.GetType().Name获取类型名称或x.GetType().FullName获取两者
添加到所有答案。
从C#6.0开始,存在nameof关键字。
string name = nameof(MyNamespace);
Run Code Online (Sandbox Code Playgroud)
这有几个优点:
这不会出错:
MethodBase.GetCurrentMethod().DeclaringType.Namespace
Run Code Online (Sandbox Code Playgroud)
您可以简单地使用typeof然后传入类(即程序):
Console.WriteLine(typeof(Program).Namespace);
Run Code Online (Sandbox Code Playgroud)
哪个会打印:
ConsoleApplication1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
57152 次 |
| 最近记录: |