我再次问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中执行此操作?
答案 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特定表达式将失败。