tag*_*s2k 1 .net c# generics reflection inheritance
假设我有以下类层次结构:TaskViewer继承自的ListViewer<Task>继承自ViewerBase.
如果我调试到声明的方法ViewerBase并查看this.GetType(),它会正确返回TaskViewer.但是,我找不到一个属性或方法,它将返回继承中使用的泛型参数,即Task.显然,如果我是在上下文中TaskViewer,ListViewer<T>那么我会很容易地知道这一点.
我可以看到它是Task通过查看BaseType.FullName属性,但我已经通过列表,我没有看到任何东西标识自己使用该泛型参数.
我如何从根类中的此方法中获取原始泛型参数?
您可以按如下方式访问基类型的泛型参数(假设只有一个类型参数).
typeof(TaskViewer).BaseType.GetGenericArguments()[0]
Run Code Online (Sandbox Code Playgroud)
在ViewerBase你会使用
this.GetType().BaseType.GetGenericArguments()[0]
Run Code Online (Sandbox Code Playgroud)
但是看起来很容易看到基类中派生类的泛型类型参数.您无法知道实际类型是什么,因此如果它根本没有泛型参数则不会.你能告诉一下你的使用场景吗?
| 归档时间: |
|
| 查看次数: |
726 次 |
| 最近记录: |