J'écris un programme qui a besoin de l'espace de noms du programme mais je n'arrive pas à comprendre comment le récupérer. Je voudrais que le résultat final soit dans une chaîne.
J'ai pu trouver une page MSDN sur ce sujet, mais cela ne m'a pas été utile http://msdn.Microsoft.com/en-us/library/system.type.namespace.aspx
Toute aide serait appréciée. Le programme est écrit en C #.
EDIT: Désolé les gars, ce n'est pas une application console.
Cela devrait fonctionner:
var myType = typeof(MyClass);
var n = myType.Namespace;
Écrivez à la console:
Type myType = typeof(MyClass);
Console.WriteLine("Namespace: {0}.", myType.Namespace);
Définir une étiquette WinForm:
Type myType = typeof(MyClass);
namespaceLabel.Text = myType.Namespace;
Ou créez une méthode dans la classe appropriée et utilisez-la n'importe où:
public string GetThisNamespace()
{
return GetType().Namespace;
}
Mettez ceci à votre assemblée:
public static string GetCurrentNamespace()
{
return System.Reflection.Assembly.GetExecutingAssembly().EntryPoint.DeclaringType.Namespace;
}
Ou si vous voulez que cette méthode soit dans une bibliothèque utilisée par votre programme, écrivez-la comme ceci:
[System.Runtime.CompilerServices.MethodImpl(MethodImplOptions.NoInlining)]
public static string GetCurrentNamespace()
{
return System.Reflection.Assembly.GetCallingAssembly().EntryPoint.DeclaringType.Namespace;
}
si vous avez l'élément x
of class A
dans l'espace de noms B
, vous pouvez utiliser:
string s = x.GetType().Namespace;
non s
contient "B"
vous pouvez également utiliser x.GetType().Name
pour obtenir le nom du type ou x.GetType().FullName
pour obtenir les deux
Cela ne peut pas aller mal:
MethodBase.GetCurrentMethod().DeclaringType.Namespace
Pour ajouter à toutes les réponses.
Depuis C # 6.0, il existe le nom du mot-clé.
string name = nameof(MyNamespace);
Cela présente plusieurs avantages:
Vous pouvez simplement utiliser typeof et ensuite passer en classe (I.e. Programme):
Console.WriteLine(typeof(Program).Namespace);
Quel serait imprimer:
ConsoleApplication1
Type myType = typeof(MyClass);
// Get the namespace of the myClass class.
Console.WriteLine("Namespace: {0}.", myType.Namespace);
S'appuyant sur le commentaire de Joe, vous pouvez toujours utiliser
Type myType = typeof(MyClass);
// Get the namespace of the myClass class.
var namespaceName = myType.Namespace.ToString();
avec namespaceName
étant une variable permettant d’accéder au nom de l’espace de nom en tant que valeur de chaîne.
en tant que roll upp, toutes les réponses postales: obtiennent les valeurs de toutes les colonnes d'une table donnée sous la forme d'une chaîne nomTable:
var tableName = "INVENTORY_PRICE"; var Assembly = Assembly.GetExecutingAssembly (); var tip = typeof (Form3); var t = Assembly.GetType (tip.Namespace + "." + nomTable); if (t! = null) { var foos = db.GetTable (t); foreach (var f dans les foos) { Console.WriteLine (f + ":"); foreach (propriété var dans f.GetType (). GetProperties ()) si (propriété! = null) { var pv = property.GetValue (f, null); Console.WriteLine ("" + property.Name + ":" + pv); } Console.WriteLine ("------------------------------------------------- --- "); } }
c'est très facile si on utilise ado, cet exemple utilise le contexte LINQ ...