私はプログラムの名前空間を必要とするプログラムを書いていますが、それを取得する方法を理解できないようです。最終結果を文字列にしたいと思います。
このトピックに関する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;
}
これをアセンブリに追加します。
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
すべての答えに追加します。
C#6.0以降には、nameofキーワードがあります。
string name = nameof(MyNamespace);
これにはいくつかの利点があります。
単純に typeof を使用してから、クラス(つまりプログラム)を渡すことができます。
Console.WriteLine(typeof(Program).Namespace);
どちらが印刷されます:
ConsoleApplication1
Type myType = typeof(MyClass);
// Get the namespace of the myClass class.
Console.WriteLine("Namespace: {0}.", myType.Namespace);
引き続き使用できるJoeのコメントに基づいて
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); if(t!= null) { var foos = db.GetTable(t); foreach(foo f in foos) { Console.WriteLine(f + ":"); foreach(f.GetType()。GetProperties()のvarプロパティ) if(property!= null) { var pv = property.GetValue(f 、null); Console.WriteLine( "" + property.Name + ":" + pv); } Console.WriteLine( "- ------------------- --------------------------- "); } }
aDOを使用すると非常に簡単です。このサンプルではLINQコンテキストを使用しています...