【问题标题】:How to Make Function Return Generic Value in VB.NET如何在 VB.NET 中使函数返回泛型值
【发布时间】:2011-09-16 14:03:09
【问题描述】:

我在 VB.NET 中有一个抽象类。我希望从这个类继承的所有类都返回任何有意义的值。例如,它可以是 Decimal、Integer、String。如何在抽象基类中删除函数以允许这样做?这甚至可能吗?

现在,我的抽象类是这样的:

Public MustInherit Class ConversionBaseClass

    Public MustOverride Function GetConvertedObject()

End Class

我知道它的返回值需要修改,但我不确定是什么。大概是这样的吧?

Public MustOverride Function GetConvertedObject() Of (T)

【问题讨论】:

  • 你继承的类是否总是返回相同的类型(每个继承的类),例如 BoolConversion 总是返回 bool?
  • 我已经用一个例子更新了我的答案

标签: .net vb.net generics


【解决方案1】:
Public MustOverride Function GetConvertedObject(Of T)() As T

应该这样做。

【讨论】:

    【解决方案2】:

    使 Base 类成为 T 的泛型,然后您可以将其用于方法

    Public MustInherit Class ConversionBaseClass (Of T) 
    
        Public MustOverride Function GetConvertedObject() As T
    
    End Class
    

    然后你定义你的继承类

    public Class IntConversion Inherits ConversionBaseClass(Of Integer) 
    
       Public Overrides Function GetConvertedObject() As Integer
    

    【讨论】:

    • 谢谢,这正是我所需要的
    • 你打算让它成为一个“公共”类吗?
    • 咆哮,我的键盘总是这样,当我使用一个名为“count”的变量时更糟!
    • 如果您将转换为可继承的类类型,我建议使用接口IConversionInterface(Of Out T) 而不是抽象类。如果您这样做,那么IConversionInterface(Of FordMustangConvertible) 的实现将可用作IConversionInterface(Of Vehicle)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-26
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    • 2021-06-16
    • 2021-05-18
    • 1970-01-01
    相关资源
    最近更新 更多