VB.NET-I';我正在重构,需要一些帮助

VB.NET-I';我正在重构,需要一些帮助,vb.net,generics,delegates,Vb.net,Generics,Delegates,我正在使用vb.net、wcf、wpf,我正在重构工作代码,希望能够减少一些冗余。我有一堆方法,它们在代码中的几个地方被调用,彼此之间只有细微的差异,我想用一个方法来代替它们 具体来说,每个冗余方法都处理一个包含我创建的不同对象的一维数组。有几种不同的对象类型,每种类型都有不同的签名,但它们都有“name”和“Id”属性。(同样,这些对象没有共享基类,但如果需要,我可以添加它。)每个冗余方法处理不同的对象类型 为了重构代码,我想将任何不同的对象数组传递给一个可以访问“name”和“id”属性的新

我正在使用vb.net、wcf、wpf,我正在重构工作代码,希望能够减少一些冗余。我有一堆方法,它们在代码中的几个地方被调用,彼此之间只有细微的差异,我想用一个方法来代替它们

具体来说,每个冗余方法都处理一个包含我创建的不同对象的一维数组。有几种不同的对象类型,每种类型都有不同的签名,但它们都有“name”和“Id”属性。(同样,这些对象没有共享基类,但如果需要,我可以添加它。)每个冗余方法处理不同的对象类型

为了重构代码,我想将任何不同的对象数组传递给一个可以访问“name”和“id”属性的新方法。我正在尝试以一种方式编写这个新方法,如果我创建了更多的对象,就不需要更新它

我读了一些关于委托和泛型类的书,但我真的不知道这是怎么回事。这就好像我想创建一个泛型类,它可以处理我的每个对象类型,但也可以访问不同对象类型的“name”和“id”属性

您能提供的任何帮助都将不胜感激。另外,请记住这个项目是用VB.net编写的

谢谢
Mike

听起来让对象实现一个公共接口或共享基类是最好的。如果您需要将一个类传递给这个方法,而这个类必须派生自不实现接口的其他类,那么接口为您提供了最大的灵活性。但是,实现接口的基类也可能仅用于减少这些属性的重复声明

Public Interface IThingThatHasNameAndId 'good name not included
    ReadOnly Property Name As String
    ReadOnly Property Id As Integer
End Interface

一旦有了接口,就可以将实现接口的类型数组作为
IEnumerable(其中的thithingthasname和ID)
传递,或者使用
T()
生成一个通用方法,并将
T
约束到接口。

生成一个具有Name和ID属性的基类,然后,您可以创建一个方法,该方法接受从该类派生的任何类

Public Function TestFunction(Of t As YourBaseClass)(Byval obj As t) As Boolean

   If obj.Name = "Some Name" AndAlso obj.ID = 1 Then

      Return True

   Else

      Return False

   End If

End Function

每个方法上使用的唯一字段是ID和Name属性吗?是。因此,解决这个问题的一个简单方法是首先从自定义对象数组中捕获这些属性的值(不管是哪种对象类型),然后将“name”和“id”值作为参数传递给新方法。这会起作用,但我希望直接使用自定义对象来实现这一点。无论如何,这是一个切线,但我希望它澄清了我的意图。