Внутри цикла For Each
:
Для одного снимка:
DirectCast(c, MyCustomer).FindCustomer(1) 'for id 1
Для использования более одного раза:
Dim customer as MyCustomer = DirectCast(c, MyCustomer)
customer.FindCustomer(1)
Вы также можете сделать:
With DirectCast(c, MyCustomer)
.FindCustomer(1)
.AnotherMethod()
'etc
End With
Веселиться!
Вот альтернатива. Я не уверен в точной архитектуре вашего проекта, поэтому я предполагаю, что это так:
Customers -has a list of Customer
MyCustomers -child of Customers with a list of MyCustomer and more functionalities
Customer -base entry
MyCustomer -base entry with more functionalities
Проблема в том, что вы не можете привести объект к его дочернему элементу (такая операция можетработать в другом направлении), это в принципе невозможная проблема. Тем не менее, вы можете обойти это путем некоторого клонирования. Это говорит мне, что базовые данные одинаковы для Customer
и MyCustomer
, вы только добавили больше методов. Это здорово, потому что это также означает, что вы можете вручную преобразовать клиента в MyCustomer. Вам просто нужно, чтобы это произошло автоматически.
В классы MyCustomers и MyCustomer вы можете добавить тезисы:
'In MyCustomers
Public Shared Function GetMyCustomersFromCustomers(customers As Customers) As MyCustomers
Dim data As New MyCustomers()
'copy each modal variable
'create a list of MyCustomer from existing Customer list
For Each c As Customer In customers.listOfCustomers
data.listOfMyCustomers.Add(MyCustomer.GetMyCustomerFromCustomer(c))
Next
Return data
End Function
'In MyCustomer
Public Shared Function GetMyCustomerFromCustomer(customer As Customer) As MyCustomer
Dim data As New MyCustomer
'copy all the data
Return data
End Function
Затем, если вы хотите работать со своими собственными объектами, вы можете экстраполировать их изте из dll:
'let's say you currently have a 'customers' as Customers object
Dim myStuff as MyCustomers = MyCustomers.GetMyCustomersFromCustomers(customers)
Если вам часто нужен список MyCustomers и вас не волнует остальная часть класса, вы можете создать функцию Shared
, которая даст вам только экстраполированный списокMyCustomer, без проблем.
Это работает только до тех пор, пока вы, конечно, можете экстраполировать MyCustomer от клиентов и MyCustomer от клиентов.
Надеюсь, это поможет.