Die Angabe params für Typ.GetMethod

Ich bin mit der Reflexion, um auf die TryParse-Methode info (upvote für die erste person zu erraten, warum ;).

Wenn ich rufe:

typeof(Int32).GetMethod("Parse",
  BindingFlags.Static | BindingFlags.Public,
  null,
  new Type[] { typeof(string) },
  null);

Bekomme ich eine Methode zurück, sondern erweitert dies leicht:

typeof(Int32).GetMethod("TryParse",
  BindingFlags.Static | BindingFlags.Public,
  null,
  new Type[] { typeof(string), typeof(Int32) },
  null);

Bekomme ich nichts zurück. Mein spidersense sagt mir, es ist, weil der zweite parameter ist ein out-parameter.

Wer weiß, was hab ich falsch gemacht hier?

  • "Wer weiß, was hab ich falsch gemacht hier?" - ja, mit der spiegelung zu nennen TryParse! 😉
  • Du bist wahrscheinlich versuchen, TryParse einen beliebigen numerischen Typ. Nicht. Convert.ChangeType mit einem catch block wird schneller sein.
  • für die lol.
  • Ja, während der Verwendung von Ausnahmen, die den Programmablauf Steuern ist in der Regel nicht eine gute Praxis, weil der speed-Strafe, Reflexion ist nicht besonders schnell oder. Es ist schwer zu sagen, entweder "richtige" oder "beste Praxis". Klar Ihr Anwendungsfall ist nicht standard hier. Und ich bin nicht sehr gut im erraten, warum. Wenn Sie uns sagen, könnten wir in der Lage, einen Vorschlag für eine bessere Lösung.
  • Ich bin immer um die Tatsache, dass es gibt keine solche Sache wie eine Schnittstelle zum darstellen von Typen, die eine TryParse-Methode (so etwas wie ITryParseable), durch staticly sammeln alle die Methode, die infos in einen cache und tun eine Suche in einem generischen TryParse-Methode. E. g. "true".TryParse<bool>().
  • Ich würde auch behaupten, dass weder "best practice". Ich könnte eine Vielzahl von if Aussagen tun tryparses basierend auf der Art, ich denke, meine Methode ist ein wenig eleganter, wenn auch einen Hauch langsamer.

InformationsquelleAutor Khanzor | 2010-12-23
Schreibe einen Kommentar