Articles of reflection

Comment pouvez-vous parcourir les propriétés d’une classe?

Existe-t-il un moyen dans c # de parcourir les propriétés d’une classe? Fondamentalement, j’ai une classe qui contient un grand nombre de propriétés (elle contient essentiellement les résultats d’une requête de firebase database volumineuse). J’ai besoin de sortir ces résultats sous la forme d’un fichier CSV. Vous devez donc append chaque valeur à une chaîne. […]

De la classe de base en C #, obtenez le type dérivé?

Disons que nous avons ces deux classes: public class Derived : Base { public Derived(ssortingng s) : base(s) { } } public class Base { protected Base(ssortingng s) { } } Comment puis-je savoir dans le constructeur de Base que Derived est l’invocateur? C’est ce que j’ai imaginé: public class Derived : Base { public […]

Un moyen de contourner l’appel de WPF à GC.Collect (2) en dehors de la reflection?

J’ai récemment dû vérifier cette monstruosité dans le code de production pour manipuler des champs privés dans une classe WPF: (tl; dr comment puis-je éviter de le faire?) private static class MemoryPressurePatcher { private static Timer gcResetTimer; private static Stopwatch collectionTimer; private static Stopwatch allocationTimer; private static object lockObject; public static void Patch() { Type […]

Scala: Comment instancier dynamicment un object et invoquer une méthode par reflection?

Dans Scala, quel est le meilleur moyen d’instancier dynamicment un object et d’invoquer une méthode utilisant la reflection? Je voudrais faire l’équivalent Scala du code Java suivant: Class class = Class.forName(“Foo”); Object foo = class.newInstance(); Method method = class.getMethod(“hello”, null); method.invoke(foo, null); Dans le code ci-dessus, le nom de la classe et le nom de […]

Quelle est la différence entre getDeclaredConstructors et getConstructors dans l’API de classe?

Je remarque que dans l’API Java Reflection, il existe deux méthodes différentes pour appeler des constructeurs: la méthode getDeclaredConstructors / getConstructors . Bien que les documents Java soient légèrement différents ( getDeclaredConstructors semble impliquer qu’il renvoie TOUS les constructeurs, plutôt que des constructeurs publics), il n’est pas clair pourquoi l’API prend explicitement en charge ces […]

Utiliser IsAssignableFrom avec des types génériques ‘ouverts’

En utilisant la reflection, je tente de trouver l’ensemble des types qui héritent d’une classe de base donnée. Il n’a pas fallu longtemps pour trouver des types simples, mais je suis déconcerté quand il s’agit de génériques. Pour ce morceau de code, le premier IsAssignableFrom renvoie true, mais le second renvoie false. Et pourtant, l’assignation […]

Comment faire un proxy dynamic simple en C #

Je veux créer un object proxy dynamic pour append certaines fonctionnalités à un object. En gros, je veux recevoir un object, l’envelopper avec un object qui ressemble à l’original obtenu et intercepter tous les appels. class Wrapper : DynamicProxy// dynamic proxy is not a reall class, but i guess something like this exists… { public […]

Comment appeler une méthode générique avec un object Type donné?

Je veux appeler ma méthode générique avec un object de type donné. void Foo(Type t) { MyGenericMethod(); } ne fonctionne évidemment pas. Comment puis-je le faire fonctionner?

Comment vérifier si le setter de propriétés est public

Étant donné un object PropertyInfo, comment puis-je vérifier que le setter de la propriété est public?

Détecter si une méthode a été remplacée par Reflection (C #)

Disons que j’ai une classe de base TestBase où je définis une méthode virtuelle TestMe () class TestBase { public virtual bool TestMe() { } } Maintenant, j’hérite de cette classe: class Test1 : TestBase { public override bool TestMe() {} } Maintenant, en utilisant Reflection, je dois trouver si la méthode TestMe a été […]