(Решено)
У меня есть моя собственная библиотека класса < /em>, которую я был последовательно разработан, итерация и модифицирован во время моего курса программирования, она содержит множество методов, которые я использую для регулярного. Например, у меня есть метод, который вызывается из любого class , использующего class с b_core.writedebug (String); .
В настоящее время этот метод требует только любой текст, который я написал, и позволяет мне не включать систему. ситуации, когда я просто хочу узнать одну цифру, и это может быть что -то вроде b_core.writedebug (integer.tostring ()); . Как я разработал как программист, я стараюсь всегда включать справочную точку , но когда я скучаю по нему, я иногда просто получаю line в результате отладки , говоря «4» или что -то в этом роде. В настоящее время единственная идея, которую я имею,-это проанализировать Stacktrace по методу.public static void WriteDebug(string text, StackTrace trace) {
var frame = trace.GetFrame(0);
string writeString = "Line: " +
frame.GetFileLineNumber() + " | " +
frame.GetFileName() + " | " +
frame.GetMethod() + " | Text:\n";
writeString += text;
// Debug output => Line: x | File: Program.cs | Main | Text:
// Hello world!
Debug.WriteLine(writeString);
}
Это будет работать, но это требует, чтобы я добавил использование system.diagnostics в каждый класс, который будет использовать b_core.writeline () . Это может привести к некоторым бессмысленным письменным дополнениям, а также class , предоставляющий легкую доступность для отладывания. Похоже.public static void WriteDebug(string text) { //Removed the StackTrace parse
var frame = Caller.trace.GetFrame(0); //Added a hypothetical Caller object
string writeString = "Line: " +
frame.GetFileLineNumber() + " | " +
frame.GetFileName() + " | " +
frame.GetMethod() + " | Text:\n";
writeString += text;
// Debug output => Line: x | File: Program.cs | Main | Text:
// Hello world!
Debug.WriteLine(writeString);
}
< /code>
, где я бы получил данные, просто ссылаясь на сам метод вызова. Итак, мой вопрос в том, что есть способ сделать что -то подобное, не добавляя дополнительные ссылки на класс Method Method , а также, как мы надеемся, не придется анализировать какой -либо другой объект к методу ? Ответ Виктора также хорош и может быть ближе к фактическому вопросу. Но я решил использовать рекомендацию Фильда.public static void WriteTrace(string text, bool printTrace = true,
[System.Runtime.CompilerServices.CallerMemberName] string membName = "",
[System.Runtime.CompilerServices.CallerFilePath] string filePath = "",
[System.Runtime.CompilerServices.CallerLineNumber] int lineNumber = 0) {
if (printTrace)
Trace.Write("Line: " +
lineNumber + " | " +
filePath.Split('\\').Last() + " | " +
membName + ":\t"
);
Trace.WriteLine(text);
//Output => Line: 208 | BMenu.cs | MoveSelection: 0
}
Подробнее здесь: https://stackoverflow.com/questions/722 ... d-name-etc
C# Получите метод вызова, номер строки, файл класса и имя метода и т. Д., В методе приема без анализа каких -либо переме ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение