Ich bin für Unity3D mit C# entwickeln und entschieden, dass es nützlich wäre, eine Assert-Funktion haben. (In Unity3D, System.Diagnostics.Debug.Assert
existiert, tut aber nichts.)Get Zeichenfolge, die den Ausdruck als Funktionsargument in C#
Als Entwickler, die in erster Linie in C++ funktioniert, ich verwende, um Nachrichten zu behaupten, dass der geltend gemachten Ausdruck durch den Präprozessor Zeichenfolge Operator enthält. Das heißt, bei einer fehlgeschlagenen Aktivierung des Formulars ASSERT(x > 0, "x should not be zero.")
kann die zur Laufzeit angezeigte Nachricht den Text "x> 0" enthalten. Ich würde gerne dasselbe in C# machen können.
Ich kenne ConditionalAttribute und DebuggerHiddenAttribute und verwende beide (obwohl Letzteres von dem benutzerdefinierten Build von MonoDevelop ignoriert wird, das mit Unity gebündelt wird). Bei der Suche nach einer Lösung für dieses Problem stieß ich auf drei Attribute im Namespace System.Runtime.CompilerServices
, die scheinen, was ich versuche zu tun: CallerFilePathAttribute, CallerLineNumberAttribute und CallerMemberNameAttribute. (In meiner Implementierung verwende ich System.Diagnostics.StackTrace
mit fNeedFileInfo == true
statt.)
Ich frage mich, ob es vielleicht irgendeine Reflexion Magie (scheint unwahrscheinlich) oder Magie-Attribut (scheint etwas häufiger), die mir die gleiche Funktionalität erreichen helfen kann Ich bin in C++ gewohnt.
Ja, genau das, was ich dachte. Da Sie Arbeitscode zur Verfügung gestellt haben, löschte ich meine Antwort. –