我已经为这个问题绞尽脑汁几个小时了,如果这里有人能提供任何建议,我将不胜感激。我想我现在被这个蒙蔽了双眼,所以一组新的脑细胞可能会看到一个非常简单的解决方案!
基本上,我从遗留数据库中提取了一些数据,需要通过构造我们自己的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
结束子
我真的希望这是清楚的,任何反馈将非常感谢之前,我撕裂我所有的头发!
谢谢卡尔
我想你会发现有帮助,看看这里的valueinjector。它可以通过应用一些您可以定义的约定来帮助您从对象转换到对象。