Y a-t-il quelque chose comme Python's getattr() en C#? Je voudrais créer une fenêtre en lisant une liste qui contient les noms des contrôles à mettre sur la fenêtre.Y a-t-il quelque chose comme getattr() de Python en C#?
Répondre
Il existe également Type.InvokeMember.
public static class ReflectionExt
{
public static object GetAttr(this object obj, string name)
{
Type type = obj.GetType();
BindingFlags flags = BindingFlags.Instance |
BindingFlags.Public |
BindingFlags.GetProperty;
return type.InvokeMember(name, flags, Type.DefaultBinder, obj, null);
}
}
qui pourrait être utilisé comme:
object value = ReflectionExt.GetAttr(obj, "PropertyName");
ou (comme une méthode d'extension):
object value = obj.GetAttr("PropertyName");
Utilisez la réflexion pour cela.
Type.GetProperty()
et Type.GetProperties()
retournent chacun PropertyInfo
instances, qui peuvent être utilisées pour lire une valeur de propriété sur un objet.
var result = typeof(DateTime).GetProperty("Year").GetValue(dt, null)
Type.GetMethod()
et Type.GetMethods()
chaque retour MethodInfo
instances, qui peuvent être utilisés pour exécuter une méthode sur un objet.
var result = typeof(DateTime).GetMethod("ToLongDateString").Invoke(dt, null);
Si vous ne connaissez pas nécessairement le type (ce qui serait un peu bizarre si vous nouvelle le nom de la propriété), que vous pourriez faire quelque chose comme ça aussi.
var result = dt.GetType().GetProperty("Year").Invoke(dt, null);
Oui, vous pouvez le faire ...
typeof(YourObjectType).GetProperty("PropertyName").GetValue(instanceObjectToGetPropFrom, null);
Il y a la classe System.Reflection.PropertyInfo qui peut être créé à l'aide object.GetType(). GetProperties(). Cela peut être utilisé pour sonder les propriétés d'un objet en utilisant des chaînes. (Des méthodes similaires existent pour les méthodes objet, les champs, etc.)
Je ne pense pas que cela vous aidera à atteindre vos objectifs. Vous devriez probablement créer et manipuler les objets directement. Les contrôles ont une propriété Name que vous pouvez définir, par exemple.
- 1. Y a-t-il quelque chose comme 'with' de Python en C#?
- 2. Il y a vraiment quelque chose comme Objective C++?
- 3. Quelque chose comme les paramètres C# en C++?
- 4. Quelque chose comme print END << END; en C++?
- 5. Y a-t-il quelque chose comme Acegi pour PHP?
- 6. Quelque chose comme SciPy dans Ruby?
- 7. Y at-il quelque chose comme jquery pour WPF/XAML?
- 8. Y a-t-il quelque chose comme 'autotest' pour les tests unitaires Python?
- 9. Y a-t-il quelque chose comme la déclaration d'évaluation de Matlab dans Objective-C 2.0?
- 10. Y a-t-il quelque chose comme Character.digit de java (char ch, int radix) dans C#?
- 11. C++ vecteur littéraux, ou quelque chose comme eux
- 12. composant ImageGrid ou quelque chose comme ça
- 13. Quelque chose comme Crystal Reports pour PHP?
- 14. Quelque chose fonctionne comme "did Init" ?? [objectif-c]
- 15. Est-ce que python a quelque chose comme C++ utilisant un mot-clé?
- 16. Existe-t-il quelque chose comme Project Sprouts mais implémenté en Python?
- 17. Quelle est la différence entre déclarer comme nouveau et comme quelque chose = quelque chose de nouveau dans vb.net?
- 18. Y at-il quelque chose que je peux remplacer AbsolutePath.Contains?
- 19. Y a-t-il quelque chose comme la bibliothèque C# (.NET) qui fonctionne comme API pour Google?
- 20. Y at-il quelque chose comme une base de données de traduction pour les chaînes?
- 21. C# menu tooltrip & quelque chose de plus
- 22. Pour les programmeurs Python, y a-t-il quelque chose d'équivalent au CPAN de Perl?
- 23. Comment faire quelque chose comme ça dans Scala?
- 24. Est-ce que Python a quelque chose comme les classes internes anonymes de Java?
- 25. Y at-il quelque chose comme ZenTest/Autotest pour Java et JUnit
- 26. Evénement handshake TLS dans Tomcat, y a-t-il quelque chose comme ça?
- 27. url MVC réécrire quelque chose comme http://controller.website.com
- 28. Ruby analyseur de code source (quelque chose comme pylint)
- 29. Y a-t-il quelque chose comme AppVerifier ou Driver Verifier pour Linux?
- 30. Y a-t-il quelque chose comme un événement OnClientConnected pour le remoting .NET?