Можно ли использовать условия в DebuggerDisplay в VB.NET?
Я задаю вопрос, заданный здесь снова, потому что ответ не подходит для VB.NET:
Рассмотрим следующий класс:
[DebuggerDisplay("{GetType().Name,nq}: FileName = {FileName,nq}")]
public class FileWrapper
{
public string FileName { get; set; }
public bool IsTempFile { get; set; }
public string TempFileName { get; set; }
}
Я хотел бы добавить отображение отладчика на основе свойства IsTempFileName. Я хотел бы добавить строку, TempFileName = {TempFileName,nq}, когда экземпляр является временным файлом. Как бы мне этого добиться?
Как мне сделать это в VB.NET?
1 ответ
VB имеет свой собственный эквивалент C# ?:
оператор в эти дни, т.е. If
, Это может быть использовано в эквивалентном сценарии:
<DebuggerDisplay("{GetType(FileWrapper).Name,nq}: FileName = {FileName,nq}{If(IsTempFile, "", TempFileName: "" & TempFileName, System.String.Empty),nq}")>
Public Class FileWrapper
Public Property FileName As String
Public Property IsTempFile As Boolean
Public Property TempFileName As String
End Class
Кажется, что GetType
там интерпретируется как оператор VB, а не Object.GetType
метод, так что вам нужно добавить тип в качестве аргумента тоже.
Также стоит проверить второй ответ в этой оригинальной теме. Я принимаю за чистую монету утверждение, которое он включает о компиляторе для вызывающего кода, который является тем, чтобы оценить предоставленное выражение. Это означает, что специфичное для C# или VB выражение в этом контексте завершится ошибкой, если тип используется кодом, написанным на другом языке.