81

プログラムの名前空間を必要とするプログラムを書いていますが、それを取得する方法がわかりません。最終結果を文字列にしたいと思います。

このトピックに関する MSDN ページを見つけることができましたが、役に立たないことがわかりました。 http://msdn.microsoft.com/en-us/library/system.type.namespace.aspx

どんな助けでも大歓迎です。プログラムはC#で書かれています。

編集: 申し訳ありませんが、これはコンソール アプリケーションではありません。

4

9 に答える 9

20

すべての回答に追加します。

C# 6.0 以降、nameof キーワードがあります。

string name = nameof(MyNamespace);

これにはいくつかの利点があります。

  1. 名前はコンパイル時に解決されます
  2. 名前空間をリファクタリングすると名前が変更されます
  3. 構文チェックされているため、名前が存在する必要があります
  4. よりきれいなコード

注:ただし、これは完全な名前空間を提供するわけではありません。この場合、nameは次のようになりBarます。

namespace Foo.Bar
{
   string name = nameof(Foo.Bar);
}
于 2016-07-26T08:12:18.807 に答える
19

これをアセンブリに入れます:

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;
}
于 2013-08-28T10:37:03.133 に答える
3
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名前空間名に文字列値としてアクセスするための変数です。

于 2013-08-28T10:38:55.503 に答える