1

伙计们;

代码如下:

Public Class MasterA
  Inherits Underling
End Class

Public Class MasterB
  Inherits Underling
End Class

Public Mustinherit Class Underling
  Sub DoSomething()
    Me.GetType 'Using the instance, I can get the class.
  end sub
  Shared function() as ???? 'How can I define the return type based on the class that inherited me?
    'Me.GetType 'Won't work as this is a shared function with no instance 'Me'
  End Function
End class

好的。问题是:有没有办法从另一个类继承的共享函数中获取类类型?

我正在构建的是一个作为可继承类的 XML 序列化器/反序列化器,以便继承它的类可以序列化为 XML 文件,然后再返回。我不想为我想要使用的每种类型的类编写序列化器/反序列化器,我只想继承该功能。

但是,要做到这一点,需要我能够确定在共享函数中继承了我的类。

4

1 回答 1

0

您可以使用通用基类获得所需的行为,我的 VB 有点生疏,所以您可能会发现杂散的括号或括号。这实际上是在共享基类函数中获取对继承类的类型引用的唯一方法。

Public Mustinherit Class Underling(Of T)
  Sub DoSomething()
    Me.GetType 'Using the instance, I can get the class.
  end sub
  Shared function() As T
    ' GetType(T)  should get the type at this point
  End Function
End class

Public Class MasterA
  Inherits Underling(Of MasterA)
End Class

Public Class MasterB
  Inherits Underling(Of MasterB)
End Class

作为旁注,它似乎是一个相当奇怪的解决方案来处理XmlSerialization而不是通过您自己的序列化器实现或XmlSerializer

于 2013-03-09T04:00:25.887 回答