Articles of reflection

Comment invoquer une méthode par reflection avec une expression lambda en tant que paramètre?

Je veux faire ça: MethodInfo m = myList.GetType().GetMethod(“ConvertAll”, System.Reflection.BindingFlags.InvokeMethod).MakeGenericMethod(typeof(object)); List myConvertedList = (List)m.Invoke(myList, new object[]{ (t => (object)t)}); myList est une liste générique d’un type spécifique (inconnu de l’application), et je souhaite la convertir en liste d’objects pour effectuer certaines opérations. Cependant, cela échoue avec l’erreur suivante: “Impossible de convertir l’expression lambda en type ‘object’ […]

La reflection peut-elle être utilisée pour instancier des propriétés de classe de base d’objects?

Comme ça: public class remoteStatusCounts : RemoteStatus { public int statusCount; public remoteStatusCounts(RemoteStatus r) { Type t = r.GetType(); foreach (PropertyInfo p in t.GetProperties()) { this.property(p) = p.GetValue(); //example pseudocode } } } L’exemple est un peu simple (il provient de l’API Jira – RemoteStatus a 4 propriétés), mais imaginons que la classe de base […]

GetCallingAssembly () et GetExecutingAssembly () sont-elles également sujettes à l’inclusion dans JIT?

Il y a Assembly.GetExecutingAssembly () et Assembly.GetCallingAssembly () . Notez que GetCallingAssembly() a une Remark indiquant que, selon le comportement de JIT inlining, il est possible qu’une méthode soit (ou non) insérée dans une autre et que GetCallingAssembly() renvoie des résultats variables. Maintenant, en quoi GetExecutingAssembly() différent? JIT inlining pourrait techniquement incorporer le code qui […]

Nullable properties vs. Nullable local variables

Je suis insortinggué par le comportement suivant des types Nullable : class TestClass { public int? value = 0; } TestClass test = new TestClass(); Désormais, Nullable.GetUnderlyingType(test.value) renvoie le type Nullable sous-jacent, qui est int . Cependant, si j’essaie d’obtenir le type de champ comme celui-ci FieldInfo field = typeof(TestClass).GetFields(BindingFlags.Instance | BindingFlags.Public)[0]; et j’invoque Nullable.GetUnderlyingType(field.FieldType).ToSsortingng() […]

Utilisez la reflection pour obtenir une liste de classes statiques

beaucoup de questions sont proches, mais aucune ne répond à mon problème … Comment utiliser la reflection en C # 3.5 pour obtenir toutes les classes statiques d’un assemblage. J’ai déjà tous les types définis, mais il n’y a pas de propriété IsStatic. Compter 0 constructeur est très lent et ne fonctionne pas non plus. […]

Trouver toutes les classes avec un atsortingbut contenant une valeur de propriété spécifique

Est-il possible de trouver une classe qui est étiquetée avec un atsortingbut personnalisé basé sur une valeur donnée à cet atsortingbut? En gros, j’ai des cours qui ressemblent à ceci – [MyAttr(“CODE”)] public class MyClass() {} De là, je reçois tous les cours (Types) – var c = Assembly.GetExecutingAssembly().GetTypes().Where ( t => t.IsClass && t.Namespace […]

Quelles sont la disposition et la taille de l’en-tête d’une classe gérée dans la mémoire non gérée?

Récemment, dans cette question , j’ai demandé comment obtenir une adresse de mémoire brute de classe en C # (c’est un hack peu fiable et une mauvaise pratique, ne l’utilisez pas sauf si vous en avez vraiment besoin). J’ai réussi, mais un problème est survenu: selon cet article, les deux premiers mots de la représentation […]

Mock ServerVariables dans le HttpContext.Current.Request

Un de mes services utilise une variable de serveur fournie par IIS via ce code var value = System.Web.HttpContext.Current.Request.ServerVariables[“MY_CUSTOM_VAR”]; Ce que j’ai essayé, c’est de me moquer de ces objects et d’insérer ma propre variable / collection et de vérifier quelques observations (par exemple, une variable est manquante, la valeur est nulle …). correctement, chacun […]

Comment puis-je obtenir un type d’un assemblage chargé à partir d’un autre dossier?

J’utilise le code suivant: Assembly.LoadFile(“the assembly in another folder”); var type = Type.GetType(“the full name of the type”); Même si l’assembly était déjà chargé avant cette ligne de code, il retourne toujours null en type . PS: J’ai transmis le nom qualifié d’assembly, y compris l’espace de noms, le nom du type, le nom de […]

Comment fournir un assemblage de secours au lieu de celui qui ne peut pas être chargé?

Au moment de l’exécution, si l’assembly référencé ne parvient pas à se charger avec par exemple “La validation du nom fort a échoué” (parce qu’il est signé de test), existe-t-il un moyen de fournir un assembly de substitution à partir d’un autre chemin réellement signé? J’ai essayé de m’abonner à AppDomain.CurrentDomain.AssemblyResolve, mais cela ne se […]