是否可以在VB.NET中使用DebuggerDisplay中的条件?

时间:2017-10-09 09:36:23

标签: .net vb.net debugging debuggerdisplay

我再次问here问题,因为答案不适合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 个答案:

答案 0 :(得分:2)

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特定表达式将失败。