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

时间:2014-11-12 20:09:58

标签: c# generics derived-class

我有以下情况:

public class CustomDataGridView<T> : DataGridView 
{
   method1();
   ...
}

class ChannelsDataGridView : CustomDataGridView<Channel>
{
   ...
}

class NetworksDataGridView : CustomDataGridView<Network>
{
   ...
}

我需要方法:

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

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

3 个答案:

答案 0 :(得分:2)

看起来你想要一个通用的方法:

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

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

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

答案 1 :(得分:2)

通用方法可以解决这个问题:

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

MSDN在这些方面有一些很好的正式documentation;但对于一些更有趣的用例,Joel Abrahamsson有一个good blog post

答案 2 :(得分:1)

您应该将Method定义为通用:

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