从泛型类型化类中确定方法参数类型

本文关键字:方法 参数 类型 泛型 泛型类 泛型类型 类型化 | 更新日期: 2023-09-27 18:30:07

我有以下情况:

public class CustomDataGridView<T> : DataGridView 
{
   method1();
   ...
}
class ChannelsDataGridView : CustomDataGridView<Channel>
{
   ...
}
class NetworksDataGridView : CustomDataGridView<Network>
{
   ...
}

我需要一种方法:

public void Method(TYPE sender)
{
   sender.method1();
}

这个方法中的TYPE应该是什么,或者我如何实现这个功能?

从泛型类型化类中确定方法参数类型

您似乎想要一个通用方法:

public void Method<T>( CustomDataGridView<T> sender )

注意,如果这是在一个已经使用T作为泛型参数的泛型类中,则应该使用不同的字母:

public void Method<U>( CustomDataGridView<U> sender )

一个通用方法就可以做到这一点:

public void Method<T>(CustomDataGridView<T> sender)

MSDN有一些很好的正式文档;但对于一些更有趣的用例,Joel Abrahamsson有一篇很好的博客文章。

您也应该将Method定义为泛型:

public void Method<T>(CustomDataGridView<T> sender)
{
   sender.method1();
}