Comment obtenir le pointeur de fonction utilisé pour construire un délégué en C#?obtenir le pointeur de fonction 'ldftn' dans C#
Répondre
Votre question est formulée d'une manière qui rend difficile à comprendre ce que vous essayez réellement de faire. Je pense que peut-être ce que vous voulez est quelque chose comme ceci:
MethodInfo mi = ...
var ptr = mi.MethodHandle.GetFunctionPointer();
// now call a delegate .ctor using that ptr
Si vous cherchez comment le code Reflection.Emit devrait ressembler, alors quelque chose comme ceci:
il.Emit(OpCodes.Ldftn, yourMethodInfo);
il.Emit(OpCodes.Newobj, yourDelegateType.GetConstructors()[0]);
La première ligne charge le pointeur de fonction sur la pile. La deuxième ligne "le passe" au constructeur du délégué. yourDelegateType
devrait être quelque chose comme typeof(Func<string>)
, etc
Oui, c'est un moyen de créer un délégué dans Reflection.Emit. Mais je veux seulement le pointeur de fonction, c'est-à-dire la sortie de ldftn – Kii
@Kii, que voulez-vous faire avec? Pouvez-vous fournir un code (pseudo) qui illustre ce que vous aimeriez accomplir? –
une fois, il existe une méthode: objet create_object (objet [] args) alors je veux créer un délégué par la méthode: objet _delegate = create_object (nouvel objet [] {null, get_ptr (method_info)}); – Kii
- 1. Pointeur de fonction dans C
- 2. C++ pointeur de fonction inline
- 3. C++ fonction-pointeur et héritage
- 4. Pointeur de fonction pour le code non managé en C#
- 5. Pointeur de fonction dans le paramètre
- 6. C: pointeur de fonction et typedef problème
- 7. Comment faire pour obtenir le pointeur vers IUnknown dans C#
- 8. C libérant le pointeur sur le pointeur
- 9. Référence circulaire pour typedef de pointeur de fonction dans C
- 10. pointeur de fonction
- 11. Déclaration récursive du pointeur de fonction dans C
- 12. Pointeur statique C++ vers la fonction
- 13. Fonction Char * (pointeur)
- 14. C++, comparateur, pointeur vers la fonction
- 15. C++ pointeur générique vers (membre?) Fonction
- 16. Pointeur de fonction
- 17. Scheme, obtenir le pointeur de struct pointu
- 18. Convertir le pointeur C uint8_t en tableau d'octets C#
- 19. pointeur pointeur C++ Méthodes
- 20. Passer un pointeur sur une fonction dans l'objectif-c
- 21. Initialisation d'un pointeur dans une fonction séparée en C
- 22. Pointeur vers un pointeur dans l'objectif-c?
- 23. Passe pointeur vers un tableau dans Haskell à C Fonction
- 24. pointeur "valeur calculée n'est pas utilisée" dans la fonction c
- 25. Référencement d'un pointeur dans une fonction membre C++
- 26. recherche de pointeur de fonction dans l'objet partagé et dll
- 27. Pointeur de fonction de modèle?
- 28. pointeur NULL dans C++
- 29. Comment enregistrer le pointeur dans C
- 30. Pointeur dans le code managé? C#
Voulez-vous l'adresse du pointeur brut, ou voulez-vous juste un objet délégué dans une variable? – siride
le pointeur de fonction utilisé pour appeler le .ctor (c'est-à-dire .ctor (objet, [native int])) – Kii
Il est assez difficile de savoir de quel ctor vous parlez. La valeur _methodPtr ne peut être générée que par le compilateur JIT. Il n'y a rien à appeler jusqu'à ce qu'il génère le code machine pour la méthode. –