Подтвердить что ты не робот

Как я могу получить пространство имен в строку С#

Я пишу программу, которая нуждается в пространстве имен программы, но я не могу понять, как ее получить. Я хотел бы, чтобы конечный результат был в строке.

Мне удалось найти страницу MSDN об этой теме, но она оказалась бесполезной для меня. http://msdn.microsoft.com/en-us/library/system.type.namespace.aspx

Любая помощь будет оценена по достоинству. Программа написана на С#.

EDIT: Извините, ребята, это не консольное приложение.

4b9b3361

Ответ 1

Это должно работать:

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;
}

Ответ 2

Поместите это в свою сборку:

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;
}

Ответ 3

если у вас есть элемент x класса A в пространстве имен B, вы можете использовать:

string s = x.GetType().Namespace;

нет s содержит "B"

вы также можете использовать x.GetType().Name, чтобы получить имя типа или x.GetType().FullName, чтобы получить как

Ответ 4

Это не может пойти не так:

MethodBase.GetCurrentMethod().DeclaringType.Namespace

Ответ 5

Вы можете просто использовать typeof, а затем передать в классе (I.e. Program):

Console.WriteLine(typeof(Program).Namespace); 

Что бы напечатать:

ConsoleApplication1

Ответ 6

Чтобы добавить все ответы.

Так как С# 6.0 есть ключевое слово nameof.

string name = nameof(MyNamespace);

Это имеет ряд преимуществ:

  • Имя разрешено во время компиляции
  • Имя изменится при рефакторинге пространства имен
  • Проверяется синтаксис, поэтому имя должно существовать
  • код очистки

Ответ 7

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 является переменной для доступа к имени пространства имен в виде строкового значения.

Ответ 8

Если вы выполняете его из класса в пространстве имен, который требуется захватить, вы можете просто использовать:

GetType().Namespace

Это хорошо работает, так как позволяет вам реорганизовать пространство имен и будет работать.

Ответ 9

как roll upp все сообщения ответы: получение значений всех столбцов из таблицы, указанной как строка 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 (var f in foos)
                    {
                        Console.WriteLine(f + ":");
                        foreach (var property in f.GetType().GetProperties())
                            if (property != null)
                            {
                                var pv = property.GetValue(f, null);
                                Console.WriteLine("   " + property.Name + ":" + pv);
                            }

                        Console.WriteLine("------------------------------------------------");
                    }
                }

очень просто, если мы используем ado, этот пример использует LINQ-контекст...