将枚举数组或列表传递给函数



我想将枚举数组与单个枚举实例进行比较。

我有一个类与枚举类型数组list

Public Enum InvalidEmailType
    Multiple_Updates  
    Period_Before_At_Sign
    Missing_Dot_Com
End Enum
Public Class CustomerClass
    Public CustomerName As String
    Public ErrorTypeList = [Enum].GetValues(GetType(InvalidEmailType))
    Public ErrorDescription As String
End Class

根据添加到列表中的值,我想运行特定的代码。

为了做到这一点,我将整个列表与单个实例进行比较:
        If UpdateCustomer.MatchErrorType(customer.ErrorTypeList, InvalidEmailType.Trailing_Period) = True Then
            'Run Code
        End If

在函数内部,我将整个列表与单个实例进行比较。

换句话说,我循环遍历类中的整个列表并检查值是否存在:

Public Shared Function MatchErrorType(CustomerErrortypeList As List(Of InvalidEmailType), EmailError As InvalidEmailType) As Boolean
    MatchErrorType = False
    Dim Found As InvalidEmailType = CustomerErrortypeList.Where(Function(match) match.ToString = EmailError.ToString).OrderByDescending(Function(match) match.ToString).FirstOrDefault()
    If Found > 0 Then
        MatchErrorType = True
    End If
End Function

问题在这里:我如何在函数参数中声明数组列表?

List(Of InvalidEmailType)不工作,因为我得到一个强制转换错误

无法强制转换'EmailValidationReport '类型的对象。InvalidEmailType[]' to type 'System.Collections.Generic.List ' 1[EmailValidationReport.InvalidEmailType]'

将ErrorTypeList设置为List(of InvalidEmailType)而不是数组。

Public ErrorTypeList = [Enum].GetValues(GetType(InvalidEmailType)) _
                       .Cast(of InvalidEmailType)().ToList()

Dim list = customer.ErrorTypeList.Cast(of InvalidEmailType)().ToList()
If UpdateCustomer.MatchErrorType(list, InvalidEmailType.Trailing_Period) Then
    'Run Code
End If

由于您没有做任何特定于ListArray的事情,因此您可以使您的方法签名采用IEnumerable而不是List。这应该能够处理ListArray(以及其他一些类型)。

Public Shared Function MatchErrorType(CustomerErrortypeList As IEnumerable(Of InvalidEmailType), EmailError As InvalidEmailType) As Boolean
    Dim Found As InvalidEmailType = CustomerErrortypeList.Where(Function(match) match.ToString = EmailError.ToString).OrderByDescending(Function(match) match.ToString).FirstOrDefault()
    MatchErrorType = (Found > 0)
End Function

相关内容

  • 没有找到相关文章