我正试图在Math.NET Numerics中为矩阵和向量编写一个调试器类型的代理/代理,以便调试器显示更多有用的信息(也在F#FSI中)。类型层次结构如下:
-
Generic.Matrix<T>
-
Double.Matrix : Generic.Matrix<double>
-
Double.DenseMatrix : Double.Matrix
什么有效
具有封闭泛型类型的非泛型代理。如果不是
Matrix<double>
构造函数将接受
Double.Matrix
或
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>
等
有什么想法吗?
相关: