C#を使用してUnity3D用に開発しており、アサート機能を持つと便利だと決めました。 (Unity3Dでは、System.Diagnostics.Debug.Assert
はが存在するが、何もしません。)C#で関数の引数として使用される式を表す文字列を取得します
C++で主に働く開発者として、私は、プリプロセッサの文字列化演算子の仕方によってアサート表現を含むメッセージをアサートするために使用しています。つまり、フォームASSERT(x > 0, "x should not be zero.")
のアサーションが失敗した場合、実行時メッセージに表示されるメッセージにはテキスト "x> 0"を含めることができます。私はC#で同じことをすることができるようにしたいと思います。
私はConditionalAttributeとDebuggerHiddenAttributeを認識していますが、両方を使用しています(後者はUnityにバンドルされたMonoDevelopのカスタムビルドでは無視されるようですが)。この問題の解決策を探しているうちに、私は、CallerFilePathAttribute、CallerLineNumberAttribute、およびCallerMemberNameAttributeの3つの属性、すなわち、System.Runtime.CompilerServices
名前空間に出くわしました。 (私の実装では、代わりにSystem.Diagnostics.StackTrace
とfNeedFileInfo == true
を使用しています)。と同じ機能を達成するのに役立つ反射マジック(おそらくそう思わない)または属性マジック(おそらく少しありそうです)があるのでしょうか?私はC++に慣れています。
はい、私は考えていた、まさに。あなたが作業コードを提供して以来、私は自分の答えを削除しました。 –