【问题标题】:Pass a parameter with a generic type to a method without knowing the type?在不知道类型的情况下将具有泛型类型的参数传递给方法?
【发布时间】:2012-02-16 14:02:25
【问题描述】:

我有一个类继承了一个带有通用参数的基类。

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(Of anyTypePossible)

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

【问题讨论】:

  • CWsSimulerPrelvBancaire 类也必须是通用的。 CsBaseService(Of Foo) 和 CsBaseService(Of Bar) 之间没有任何关系,它们是不同的类型,只有共同的 Object。

标签: generics c#-3.0


【解决方案1】:

如果您传递给 CsBaseService 的泛型类型参数可以将自身约束到一个接口,您可以像这样将您的方法重写为泛型:

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

【讨论】:

    猜你喜欢
    • 2012-09-19
    • 1970-01-01
    • 2010-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-11
    • 1970-01-01
    相关资源
    最近更新 更多