Как я могу получить пространство имен в строку С#
Я пишу программу, которая нуждается в пространстве имен программы, но я не могу понять, как ее получить. Я хотел бы, чтобы конечный результат был в строке.
Мне удалось найти страницу MSDN об этой теме, но она оказалась бесполезной для меня.
http://msdn.microsoft.com/en-us/library/system.type.namespace.aspx
Любая помощь будет оценена по достоинству. Программа написана на С#.
EDIT: Извините, ребята, это не консольное приложение.
Ответы
Ответ 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-контекст...