DebuggerTypeProxy用于泛型类型层次结构
本文关键字:层次结构 泛型类型 用于 DebuggerTypeProxy | 更新日期: 2023-09-27 18:06:26
我正试图为数学中的矩阵和向量编写调试器类型代理/代理。. NET数字,所以调试器显示更多有用的信息(也在f# FSI)。类型层次结构如下:
-
Generic.Matrix<T>
-
Double.Matrix : Generic.Matrix<double>
-
Double.DenseMatrix : Double.Matrix
具有封闭泛型类型的非泛型代理。如果构造函数接受Double.Matrix
或Double.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
设置MatrixSummary
为嵌套类:
[DebuggerTypeProxy(typeof(Matrix<>.MatrixSummary))]