Gibt es so etwas wie Python's getattr() in C#? Ich möchte ein Fenster erstellen, indem ich eine Liste lese, die die Namen der Steuerelemente enthält, die in das Fenster eingefügt werden sollen.Gibt es etwas wie Pythons getattr() in C#?
Antwort
Es gibt auch 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);
}
}
, die wie verwendet werden könnte:
object value = ReflectionExt.GetAttr(obj, "PropertyName");
oder (als Erweiterung Methode):
object value = obj.GetAttr("PropertyName");
Verwenden Sie Reflektion dafür.
Type.GetProperty()
und Type.GetProperties()
jede Rückkehr PropertyInfo
Instanzen, die verwendet werden können, um einen Eigenschaftswert für ein Objekt zu lesen.
var result = typeof(DateTime).GetProperty("Year").GetValue(dt, null)
Type.GetMethod()
und Type.GetMethods()
jede Rückkehr MethodInfo
Instanzen, die verwendet werden können, ein Verfahren auf einem Objekt auszuführen.
var result = typeof(DateTime).GetMethod("ToLongDateString").Invoke(dt, null);
Wenn Sie nicht unbedingt wissen, den Typ (die ein wenig seltsam wäre, wenn Sie den Namen der Eigenschaft neu), als man auch etwas tun könnte.
var result = dt.GetType().GetProperty("Year").Invoke(dt, null);
Ja, Sie können dies tun ...
typeof(YourObjectType).GetProperty("PropertyName").GetValue(instanceObjectToGetPropFrom, null);
Es gibt die System.Reflection.PropertyInfo Klasse, die Object.GetType erstellt werden können(). GetProperties(). Dies kann verwendet werden, um die Eigenschaften eines Objekts mithilfe von Zeichenfolgen zu untersuchen. (Ähnliche Methoden existieren für Objektmethoden, Felder usw.)
Ich glaube nicht, dass das Ihnen helfen wird, Ihre Ziele zu erreichen. Sie sollten die Objekte wahrscheinlich nur direkt erstellen und bearbeiten. Steuerelemente verfügen über eine Name-Eigenschaft, die Sie beispielsweise festlegen können.
- 1. Gibt es so etwas wie Pythons "mit" in C#?
- 2. Java-Äquivalent von Pythons getattr?
- 3. Gibt es etwas wie GhostDoc für C++
- 4. vereinfachen einfachen C++ Code - so etwas wie Pythons jeden
- 5. Gibt es ein Äquivalent von Pythons (12) in C#?
- 6. gibt es ein C# Äquivalent von Pythons iertools.combinations_with_replacement
- 7. Wie überprüft man, ob es etwas in cin gibt [C++]
- 8. Gibt es etwas wie eine erweiterbare Warteschlange in C#?
- 9. Gibt es in Objective-C etwas Ähnliches wie LINQ?
- 10. Gibt es etwas wie NSDictionary in Android?
- 11. Gibt es etwas wie RhinoMocks in Java?
- 12. Gibt es etwas wie Python Decorators für C#?
- 13. Gibt es etwas wie PPI oder Perl :: Critic for C?
- 14. Gibt es etwas wie Selbst für Klassenmethoden?
- 15. Gibt es etwas wie JAX-B für C#?
- 16. Gibt es etwas wie Python-Export?
- 17. Gibt es in Elixir eine Abkürzung ähnlich wie Pythons Enumerate?
- 18. In C++ gibt es irgendwelche Events/Delegates/Interfaces/Benachrichtigungen! etwas?
- 19. Gibt es eine Projektdateiunterstützung wie npm/package.json für Pythons Pip?
- 20. VBA - Gibt es so etwas wie Listen?
- 21. Gibt es Plugins für Pythons IDLE?
- 22. Gibt es etwas wie ein funktionales Modell?
- 23. Gibt es so etwas wie XML 2.0?
- 24. Gibt es etwas wie WMI für Linux?
- 25. Gibt es so etwas wie "Unicode-Sortierung"?
- 26. gibt es etwas wie "oncall" Javascript-Methode?
- 27. Gibt es etwas wie bpython für Ruby?
- 28. OpenCV - gibt es etwas wie Löschtext?
- 29. gibt es etwas wie RightMark für Linux?
- 30. Gibt es so etwas wie eine Null bool in vb.net