#.net
#.net
Вопрос:
Я уже пару часов бьюсь головой об эту проблему, если кто-нибудь здесь может предложить какие-либо указания, я был бы благодарен. Я думаю, что теперь я ослеплен этим, так что свежий набор мозговых клеток, вероятно, увидит действительно простое решение!
В принципе, у меня есть некоторые данные, которые я извлекаю из устаревшей базы данных, которые необходимо преобразовать в нашу систему управления запасами путем создания нашего собственного объекта Stock.
Упрощенная модель показана ниже:
Public Class Stock
Public Property Attributes As List(Of StockAttribute)
End Class
Public Class StockAttribute
Public Property AttributeName As String
Public Property AttributeValue As String
End Class
Исходные данные поступают как этот объект:
Public Class SourceOption
Public Property OptionName As String
Public Property OptionValue As String
End Class
Некоторые образцы данных могут быть сконструированы с использованием этих методов:
Function GetSourceList1() As List(Of SourceOption)
'prepare the source data
Dim options As New List(Of SourceOption)
Dim opt As New SourceOption
opt.OptionName = "Size"
opt.OptionValue = "Small"
Dim opt2 As New SourceOption
opt.OptionName = "Size"
opt.OptionValue = "Medium"
Dim opt3 As New SourceOption
opt.OptionName = "Size"
opt.OptionValue = "Large"
Dim opt4 As New SourceOption
opt.OptionName = "Colour"
opt.OptionValue = "Black"
Dim opt5 As New SourceOption
opt.OptionName = "Colour"
opt.OptionValue = "Purple"
options.Add(opt)
options.Add(opt2)
options.Add(opt3)
options.Add(opt4)
options.Add(opt5)
Return (options)
End Function
Function GetSourceList2() As List(Of SourceOption)
'prepare the source data
Dim options As New List(Of SourceOption)
Dim opt As New SourceOption
opt.OptionName = "Size"
opt.OptionValue = "40"
Dim opt2 As New SourceOption
opt.OptionName = "Size"
opt.OptionValue = "41"
Dim opt3 As New SourceOption
opt.OptionName = "Size"
opt.OptionValue = "42"
options.Add(opt)
options.Add(opt2)
options.Add(opt3)
Return (options)
End Function
Function GetSourceList3() As List(Of SourceOption)
'prepare the source data
Dim options As New List(Of SourceOption)
Dim opt As New SourceOption
opt.OptionName = "Size"
opt.OptionValue = "Small"
Dim opt2 As New SourceOption
opt.OptionName = "Size"
opt.OptionValue = "Large"
Dim opt3 As New SourceOption
opt.OptionName = "Colour"
opt.OptionValue = "Red"
Dim opt4 As New SourceOption
opt.OptionName = "Colour"
opt.OptionValue = "Blue"
Dim opt5 As New SourceOption
opt.OptionName = "Style"
opt.OptionValue = "A"
Dim opt6 As New SourceOption
opt.OptionName = "Style"
opt.OptionValue = "B"
options.Add(opt)
options.Add(opt2)
options.Add(opt3)
options.Add(opt4)
options.Add(opt5)
options.Add(opt6)
Return (options)
End Function
Итак, мой метод «Convert» должен использовать списки sourceOption и создавать исходные списки (с атрибутами), как описано здесь:
Дополнительное преобразование ()
'we need to convert the SourceOption list (in GetSourceList) into a list of Stock, each with a list of StockAttribute. So in the case of GetSourceList1 we would have
'six stock objects, each stock object containing two StockAttribute objects (one for colour and one for size):
'STOCK1 - Attribute1: Size:Small Attribute2: Colour:Black
'STOCK2 - Attribute1: Size:Medium Attribute2: Colour:Black
'STOCK3 - Attribute1: Size:Large Attribute2: Colour:Black
'STOCK4 - Attribute1: Size:Small Attribute2: Colour:Purple
'STOCK5 - Attribute1: Size:Medium Attribute2: Colour:Purple
'STOCK6 - Attribute1: Size:Large Attribute2: Colour:Purple
'in the case of GetSourceList2 we would have three stock objects with only one stockattribute each (for size):
'STOCK1 - Attribute1: Size:40
'STOCK2 - Attribute1: Size:41
'STOCK3 - Attribute1: Size:42
'in the case of GetSourceList3 we would have eigth stock objects with three stockattribute each (for size, colour and style):
'STOCK1 - Attribute1: Size:Small Attribute2: Colour:Red Attribute3: Style:A
'STOCK2 - Attribute1: Size:Large Attribute2: Colour:Red Attribute3: Style:A
'STOCK3 - Attribute1: Size:Small Attribute2: Colour:Blue Attribute3: Style:A
'STOCK4 - Attribute1: Size:Large Attribute2: Colour:Blue Attribute3: Style:A
'STOCK5 - Attribute1: Size:Small Attribute2: Colour:Red Attribute3: Style:B
'STOCK6 - Attribute1: Size:Large Attribute2: Colour:Red Attribute3: Style:B
'STOCK7 - Attribute1: Size:Small Attribute2: Colour:Blue Attribute3: Style:B
'STOCK8 - Attribute1: Size:Large Attribute2: Colour:Blue Attribute3: Style:B
Завершение подзаголовка
Я надеюсь, что это понятно, и буду признателен за любую обратную связь, прежде чем я буду рвать на себе все волосы!
Спасибо, Карл
Ответ №1:
Я думаю, вам будет полезно взглянуть здесь на ValueInjecter. Это может помочь вам преобразовывать из объекта в объект, применяя некоторые соглашения, которые вы можете определить.