有没有办法实现一个可以被几个不同类使用的比较器函数,如果不是那么具有相同成员名的不同类呢?是否有设计模式?
确定, 我有几个类,我有一个同名和类型的成员 我可以为每个类实现(VB)Icomparer或IComparable,即A类:实现IComparable并为每个类实现CompareTo函数(我有很多类) 有没有办法实现一个函数来完成工作,在每个类中我都可以使用这个函数,或者我需要为每个类实现CompareTo函数 谢谢
Private Class A : Implements IComparable
Public A1 As String
Public A2 As Integer
Public Age As String
Function CompareTo(ByVal obj As Object) As Integer Implements IComparable.CompareTo
Dim a As A = CType(obj, A)
Return String.Compare(CStr(Me.Age), CStr(a.Age))
End Function
End Class
Private Class B : Implements IComparable
Public B1 As String
Public B2 As Date
Public Age As String
Function CompareTo(ByVal obj As Object) As Integer Implements IComparable.CompareTo
Dim b As B = CType(obj, B)
Return String.Compare(CStr(Me.Age), CStr(b.Age))
End Function
End Class
答案 0 :(得分:1)
此代码背后的业务需求是什么?如果你详细说明,我们可能会建议一个更好的解决方案。过于抽象并不总是适合这种情况。
但是,您可以创建一个公开Age As String
的接口,然后实现一个抽象类(VB中的MustInherit),它将为此接口提供一个实现,然后从抽象类继承您的类。
答案 1 :(得分:1)
基于对问题的一些稀疏描述,我相信你想要实现的是一种通用的比较方法。实施特定于您的要求。但是,根据您的简短描述,您需要使用reflection循环遍历TFrom的属性,并查看TTo是否具有等效项。
对于您的实施,您必须回答一个简单的问题,“您是否正在进行此比较以确定排序顺序?”如果是这样,那么实现{@ 3}}接口就像@Sergey Berezovskiy所提到的那样。否则,IComparable<T>是更好的选择。