Articles of reflection

Comment puis-je obtenir des constantes définies par la classe du module Ruby via la reflection?

J’essayais de prendre dans ma tête le chapitre sur le métaprogrammation “Ruby Programming Language” de Matz et Flanagan. Cependant, je ne pouvais pas comprendre le résultat de l’extrait de code suivant que j’avais imaginé: p Module.constants.length # => 88 $snapshot1 = Module.constants class A NAME=:abc $snapshot2 = Module.constants p $snapshot2.length # => 90 p $snapshot2 […]

En C #, l’API d’expression est-elle meilleure que Reflection

Aujourd’hui, j’explore les API C # Expression. Donc, je pourrais utiliser une aide pour comprendre comment cela fonctionne, y compris la différence entre expression et reflection. Je veux aussi comprendre si les expressions ne sont que du sucre syntaxique, ou sont-elles vraiment meilleures que celles de la reflection? De bons exemples ainsi que des liens […]

Conversion d’un entier en un type enum en boîte connu uniquement à l’exécution

Imaginez que nous ayons une énumération: enum Foo { A=1,B=2,C=3 } Si le type est connu à la compilation, une conversion directe peut être utilisée entre le type enum et le type sous-jacent (généralement int ): static int GetValue() { return 2; } … Foo foo = (Foo)GetValue(); // becomes Foo.B Et la boxe cela […]

Comment puis-je invoquer une méthode avec un paramètre out?

Je veux exposer la méthode WebClient.DownloadDataInternal comme ci-dessous: [ComVisible(true)] public class MyWebClient : WebClient { private MethodInfo _DownloadDataInternal; public MyWebClient() { _DownloadDataInternal = typeof(WebClient).GetMethod(“DownloadDataInternal”, BindingFlags.NonPublic | BindingFlags.Instance); } public byte[] DownloadDataInternal(Uri address, out WebRequest request) { _DownloadDataInternal.Invoke(this, new object[] { address, out request }); } } WebClient.DownloadDataInternal a un paramètre out, je ne sais pas […]

Récupère tous les champs (même privés et hérités) de la classe

Je fais un projet universitaire. Je dois obtenir tous les champs de la classe. Même privé et hérité. J’ai essayé d’obtenir tous les champs déclarés, puis de lancer la super classe et de répéter. Fragment de mon code: private void listAllFields(Object obj) { List fieldList = new ArrayList(); while (obj != null) { fieldList.addAll(Arrays.asList(obj.getClass().getDeclaredFields())); obj […]

Puis-je obtenir les noms / valeurs de parameters de la fonction en cours d’exécution?

Je voudrais faire quelque chose comme ça: public MyFunction(int integerParameter, ssortingng ssortingngParameter){ //Do this: LogParameters(); //Instead of this: //Log.Debug(“integerParameter: ” + integerParameter + // “, ssortingngParameter: ” + ssortingngParameter); } public LogParameters(){ //Look up 1 level in the call stack (if possible), //Programmatically loop through the function’s parameters/values //and log them to a file (with […]

C # – Récupère les valeurs des propriétés statiques de la classe statique

J’essaie de parcourir certaines propriétés statiques dans une classe statique simple afin de remplir une boîte combinée avec leurs valeurs, mais j’ai des difficultés. Voici la classe simple: public static MyStaticClass() { public static ssortingng property1 = “NumberOne”; public static ssortingng property2 = “NumberTwo”; public static ssortingng property3 = “NumberThree”; } … et le code […]

Comment appeler une méthode de super classe en utilisant la reflection Java

J’ai deux cours. public class A { public Object method() {…} } public class B extends A { @Override public Object method() {…} } J’ai une instance de B. Comment appeler A.method () à partir de b? Fondamentalement, le même effet que d’appeler super.method () de B. B b = new B(); Class superclass = […]

Comment utiliser la reflection pour déterminer le type nested (type d’élément) d’un tableau?

J’ai une instance de System.Type, pour laquelle “IsArray” renvoie true. Comment puis-je déterminer le “type nested” du type de tableau? c’est à dire Type GetArrayType(Type t) { if(t.IsArray) { // What to put here? } throw new Exception(“Type is not an array”); } Assert.That(GetArrayType(typeof(ssortingng[])), Iz.EqualTo(typeof(ssortingng)); Assert.That(GetArrayType(typeof(Foo[])), Iz.EqualTo(typeof(Foo));

GetEntryAssembly pour les applications Web

Assembly.GetEntryAssembly () ne fonctionne pas pour les applications Web. Mais … j’ai vraiment besoin de quelque chose comme ça. Je travaille avec du code profondément nested utilisé dans les applications Web et non Web. Ma solution actuelle consiste à parcourir le StackTrace pour trouver le premier assemblage appelé. /// /// Version of ‘GetEntryAssembly’ that works […]