1

我再次问这里问的问题,因为答案不适合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 中执行此操作?

4

1 回答 1

3

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

于 2017-10-09T10:30:55.770 回答