我正在编写一个需要程序名称空间的程序,但我似乎不知道如何检索它。我希望最终结果在一个字符串中。
我能够找到有关此主题的 MSDN 页面,但事实证明它对我自己没有帮助。 http://msdn.microsoft.com/en-us/library/system.type.namespace.aspx
任何帮助,将不胜感激。该程序是用 C# 编写的。
编辑:对不起,这不是控制台应用程序。
我正在编写一个需要程序名称空间的程序,但我似乎不知道如何检索它。我希望最终结果在一个字符串中。
我能够找到有关此主题的 MSDN 页面,但事实证明它对我自己没有帮助。 http://msdn.microsoft.com/en-us/library/system.type.namespace.aspx
任何帮助,将不胜感激。该程序是用 C# 编写的。
编辑:对不起,这不是控制台应用程序。
这应该有效:
var myType = typeof(MyClass);
var n = myType.Namespace;
写出到控制台:
Type myType = typeof(MyClass);
Console.WriteLine("Namespace: {0}.", myType.Namespace);
设置 WinForm 标签:
Type myType = typeof(MyClass);
namespaceLabel.Text = myType.Namespace;
或者在相关类中创建一个方法并在任何地方使用:
public string GetThisNamespace()
{
return GetType().Namespace;
}
添加到所有答案。
从 C# 6.0 开始,就有了 nameof 关键字。
string name = nameof(MyNamespace);
这有几个优点:
注意:这并没有给出完整的命名空间。在这种情况下,name
将等于Bar
:
namespace Foo.Bar
{
string name = nameof(Foo.Bar);
}
把它放到你的程序集中:
public static string GetCurrentNamespace()
{
return System.Reflection.Assembly.GetExecutingAssembly().EntryPoint.DeclaringType.Namespace;
}
或者,如果您希望此方法位于程序使用的库中,请按如下方式编写:
[System.Runtime.CompilerServices.MethodImpl(MethodImplOptions.NoInlining)]
public static string GetCurrentNamespace()
{
return System.Reflection.Assembly.GetCallingAssembly().EntryPoint.DeclaringType.Namespace;
}
如果您在命名空间中有x
类项目,您可以使用:A
B
string s = x.GetType().Namespace;
不s
包含“B”
您还可以使用x.GetType().Name
来获取类型名称或x.GetType().FullName
同时获取两者
这不会出错:
MethodBase.GetCurrentMethod().DeclaringType.Namespace
Type myType = typeof(MyClass);
// Get the namespace of the myClass class.
Console.WriteLine("Namespace: {0}.", myType.Namespace);
基于乔的评论,您仍然可以使用
Type myType = typeof(MyClass);
// Get the namespace of the myClass class.
var namespaceName = myType.Namespace.ToString();
作为一个变量来namespaceName
访问命名空间名称作为字符串值。
如果您从需要捕获的命名空间中的类执行它,那么您可以使用:
GetType().Namespace
这很好用,因为它允许您重构命名空间并且仍然可以工作。
作为汇总所有帖子的答案:从作为字符串 tableName 给出的表中获取所有列的值:
var tableName = "INVENTORY_PRICE"; var assembly = Assembly.GetExecutingAssembly(); var tip = typeof(Form3); var t = assembly.GetType(tip.Namespace + "." + tableName); 如果(t!= null) { var foos = db.GetTable(t); foreach (var f in foos) { Console.WriteLine(f + ":"); foreach(f.GetType().GetProperties() 中的 var 属性) 如果(属性!= null) { var pv = property.GetValue(f, null); Console.WriteLine(" " + property.Name + ":" + pv); } Console.WriteLine("--------------------------------- ---"); } }
如果我们使用 ado 很容易,这个示例使用 LINQ 上下文......