DebuggerTypeProxy用于泛型类型层次结构

本文关键字:层次结构 泛型类型 用于 DebuggerTypeProxy | 更新日期: 2023-09-27 18:06:26

我正试图为数学中的矩阵和向量编写调试器类型代理/代理。. NET数字,所以调试器显示更多有用的信息(也在f# FSI)。类型层次结构如下:

  • Generic.Matrix<T>
  • Double.Matrix : Generic.Matrix<double>
  • Double.DenseMatrix : Double.Matrix

工作什么

具有封闭泛型类型的非泛型代理。如果构造函数接受Double.MatrixDouble.DenseMatrix而不是Matrix<double>,它也会以同样的方式工作。

public class MatrixSummary
{
    public MatrixSummary(Matrix<double> matrix) { }
    // ...
}

然后,装饰Double。DenseMatrix:

[DebuggerTypeProxy(typeof(MatrixSummary))]

我想做什么

我不喜欢为每种类型实现单独的代理,所以让我们把它变成通用的:

public class MatrixSummary<T> where T : ...
{
    public MatrixSummary(Matrix<T> matrix) { }
    // ...
}

然后,装饰Double。DenseMatrix:

[DebuggerTypeProxy(typeof(MatrixSummary<>))]

或者以:

结尾
[DebuggerTypeProxy(typeof(MatrixSummary<double>))]

和/或者如果需要,还可以将该属性添加到基类中。

这些都不起作用,例如在调试单元测试时,即使文档说它应该在使用开放泛型类型(即MatrixSummary<>)声明属性时起作用。毕竟它也可以很好地与List<T>等。

任何想法?

相关:

  • 诊断DebuggerTypeProxy属性不工作的原因
  • 我怎么能有我的DebuggerTypeProxy目标类从基代理继承?
  • http://msdn.microsoft.com/en-us/library/d8eyd8zc.aspx

DebuggerTypeProxy用于泛型类型层次结构

设置MatrixSummary为嵌套类:

[DebuggerTypeProxy(typeof(Matrix<>.MatrixSummary))]