5

我正在尝试为 Math.NET Numerics 中的矩阵和向量编写调试器类型代理/代理,因此调试器会显示更多有用的信息(也在 F# FSI 中)。类型层次结构如下:

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

什么有效

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

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>等。

有任何想法吗?

有关的:

4

1 回答 1

9

创建MatrixSummary一个嵌套类:

[DebuggerTypeProxy(typeof(Matrix<>.MatrixSummary))]
于 2013-04-04T17:59:17.393 回答