将具有泛型类型的参数传递给方法而不知道类型?

时间:2012-02-16 14:02:25

标签: generics c#-3.0

我有一个继承基类的类,它带有一个泛型参数。

Partial Public Class CWsSimulerPrelvBancaire
    Inherits CsBaseService(Of CxSimulerPrelvBancaire)

我的问题是我需要将基类传递给方法,因为我希望从该基类继承的每个类都通过该方法。

  Public Sub ChangerService(ByVal ctl_Service As CsBaseService(Of ???)
        _ctlServiceActif = ctl_Service
        _ctlConteneurService.ActiveViewIndex = ctl_Service.Service
    End Sub

问题在于我添加了“???”在上面这段代码中..如何在那里设置通用?因为我们不需要知道这里指定了哪个类型,我们只需要知道它的CsBaseService(任何类型的可能)

我正在寻找解决这个问题的最干净的解决方案。

1 个答案:

答案 0 :(得分:0)

如果传递给CsBaseService的泛型类型参数可以将自身约束到接口,则可以将方法重写为通用的,如下所示:

public void ChangerService<T>(CsBaseService<T> ctl_Service) where T: IInterfaceOfGenericArgument