Я пытаюсь использовать callbyname для записи общей функции, которая проверяет, содержит ли целевой список (targetListName) определенный элемент перед добавлением его в список. К сожалению, я не могу понять, как использовать .contains с callbyname. Цените любую помощь!Использование callbyname для проверки list.contains (x)
Это код, который я использую сейчас. Поставка и спрос - это оба списка (строки).
Public Sub addItem(ByVal item As String, ByVal targetListName As String)
Select Case targetListName.ToLower
Case "supply"
If supply.Contains(item) = False Then supply.Add(targetListName)
Case "demand"
If demand.Contains(item) = False Then supply.Add(targetListName)
Case Else
'bugcatch
End Select
End Sub
Я хотел бы идеально использовать что-то вроде этого, вместо:
Public Sub addItem(ByVal item As String, ByVal targetListName As String)
If CallByName(Me, targetListName, [Method]).Contains(item) = false Then
CallByName(Me, targetListName, [Set]).Add(item)
End If
End Sub
Честно говоря, это просто потому, что я ленив и предпочел бы не писать больше строк кода, если мне захочется добавить больше списков, хахахаха. Если нет способа сделать это, я думаю, мне придется придерживаться использования select ... case или словаря. Благодаря! – PostalElf
Это похоже на проблему архитектуры, а затем проблему с кодом. Часто, когда мы пытаемся заставить что-то что-то сделать, оно не предназначено для решения этих проблем. Как этот бит кода вписывается в ваше общее решение? Вы нарушаете SRP или LSP от SOLID дизайнеров? Это вопросы, которые я задаю себе, когда сталкиваюсь с такими проблемами. – jcwrequests