質問編集履歴
4
コメントの指摘に基づき内容を追記。
title
CHANGED
File without changes
|
body
CHANGED
@@ -24,49 +24,55 @@
|
|
24
24
|
```
|
25
25
|
|
26
26
|
### 該当のソースコード
|
27
|
+
以下が最低限動くソースです。
|
27
28
|
|
28
29
|
```VB
|
30
|
+
Module Module1
|
31
|
+
|
32
|
+
Sub Main()
|
33
|
+
Try
|
34
|
+
PrintLabel(New MyCondition With
|
35
|
+
{
|
36
|
+
.AAA = 1
|
37
|
+
})
|
38
|
+
Catch ex As Exception
|
39
|
+
Console.WriteLine(ex.Message)
|
40
|
+
Console.ReadKey()
|
41
|
+
End Try
|
42
|
+
Console.ReadKey()
|
43
|
+
End Sub
|
44
|
+
|
29
45
|
Private Sub PrintLabel(ByVal condition As MyCondition)
|
30
|
-
Dim labelData = New
|
46
|
+
Dim labelData = New My_Class With {
|
31
47
|
.ProductId = condition.ProductId,
|
32
|
-
.ProductName = condition.ProductName
|
48
|
+
.ProductName = condition.ProductName,
|
33
49
|
.AAA = condition.AAA,
|
34
|
-
.BBB =
|
50
|
+
.BBB = "2019/04/01",
|
35
|
-
.CCC =
|
51
|
+
.CCC = "2019/04/01",
|
36
|
-
.DDD =
|
52
|
+
.DDD = "2019/04/01",
|
37
53
|
.EEE = condition.EEE,
|
38
|
-
.FFF =
|
54
|
+
.FFF = MstTable.LabelSize.Middle,
|
39
55
|
.GGG = condition.GGG,
|
40
56
|
.HHH = 0,
|
41
|
-
.III =
|
57
|
+
.III = MyCondition.LabelTypeEnum.Box,
|
42
|
-
.JJJ =
|
58
|
+
.JJJ = condition.JJJ,
|
43
|
-
.KKK =
|
59
|
+
.KKK = condition.KKK,
|
44
|
-
.LLL =
|
60
|
+
.LLL = condition.LLL,
|
45
|
-
.MMM =
|
61
|
+
.MMM = condition.MMM,
|
46
|
-
.NNN =
|
62
|
+
.NNN = condition.NNN,
|
47
|
-
.OOO = New List(Of
|
63
|
+
.OOO = New List(Of MyDto)
|
48
64
|
}
|
49
65
|
|
50
|
-
|
66
|
+
PrintProductLabel(labelData) 'ここで落ちる
|
51
67
|
End Sub
|
52
68
|
|
53
|
-
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
54
|
-
|
69
|
+
Public Function PrintProductLabel(ByVal labelData As IEnumerable(Of My_Class)) As Boolean
|
55
|
-
'メソッド内省略
|
56
|
-
return True
|
57
|
-
End Function
|
58
70
|
|
59
|
-
|
71
|
+
Return True
|
72
|
+
End Function
|
60
73
|
|
61
|
-
```VB
|
62
|
-
|
74
|
+
Public Class MyCondition
|
63
75
|
|
64
|
-
'labelDataにNewしているクラスです。
|
65
|
-
|
66
|
-
Public Class MyClass
|
67
|
-
|
68
|
-
#Region "Enum"
|
69
|
-
|
70
76
|
Public Enum LabelTypeEnum
|
71
77
|
|
72
78
|
''' <summary>商品</summary>
|
@@ -77,10 +83,6 @@
|
|
77
83
|
|
78
84
|
End Enum
|
79
85
|
|
80
|
-
#End Region
|
81
|
-
|
82
|
-
#Region "プロパティ"
|
83
|
-
|
84
86
|
''' <summary>商品ID</summary>
|
85
87
|
Public Property ProductId As Integer
|
86
88
|
|
@@ -105,17 +107,35 @@
|
|
105
107
|
Public Property NNN As LabelTypeEnum
|
106
108
|
Public Property OOO As List(Of MyDto)
|
107
109
|
|
108
|
-
|
110
|
+
End Class
|
109
111
|
|
112
|
+
Public Class My_Class
|
113
|
+
Public Property ProductId As Integer
|
114
|
+
Public Property ProductName As String
|
115
|
+
Public Property AAA As String
|
116
|
+
Public Property BBB As Object
|
117
|
+
Public Property CCC As Object
|
118
|
+
Public Property DDD As Date
|
119
|
+
Public Property EEE As Decimal
|
120
|
+
Public Property FFF As Object
|
121
|
+
Public Property GGG As String
|
122
|
+
Public Property HHH As Integer
|
123
|
+
Public Property III As Object
|
124
|
+
Public Property JJJ As Object
|
125
|
+
Public Property KKK As Object
|
126
|
+
Public Property LLL As Object
|
127
|
+
Public Property MMM As Object
|
128
|
+
Public Property NNN As Object
|
129
|
+
Public Property OOO As List(Of MyDto)
|
110
130
|
End Class
|
111
131
|
|
112
|
-
|
132
|
+
Public Class MyDto
|
113
|
-
|
133
|
+
Public Property Name As String
|
114
134
|
|
115
|
-
```VB
|
116
|
-
|
135
|
+
Public Property Dose As String
|
117
136
|
|
118
|
-
|
137
|
+
Public Property Unit As String
|
138
|
+
End Class
|
119
139
|
|
120
140
|
Public NotInheritable Class MstTable
|
121
141
|
|
@@ -150,33 +170,80 @@
|
|
150
170
|
|
151
171
|
End Class
|
152
172
|
|
153
|
-
|
173
|
+
<Serializable>
|
154
|
-
|
174
|
+
Public Class AbstractEnumString
|
155
175
|
|
156
|
-
```VB
|
157
|
-
|
176
|
+
#Region "プロパティ"
|
158
177
|
|
159
|
-
|
178
|
+
Private Property Value As String
|
160
179
|
|
161
|
-
|
180
|
+
#End Region
|
162
181
|
|
163
|
-
#Region "
|
182
|
+
#Region "コンストラクター"
|
164
183
|
|
165
|
-
''' <summary>名称</summary>
|
166
|
-
|
184
|
+
Private Sub New() : End Sub
|
167
185
|
|
168
|
-
''' <summary>用量</summary>
|
169
|
-
|
186
|
+
Protected Sub New(ByVal value As String)
|
187
|
+
Me.Value = value
|
188
|
+
End Sub
|
170
189
|
|
171
|
-
''' <summary>単位</summary>
|
172
|
-
|
190
|
+
#End Region
|
173
191
|
|
192
|
+
#Region "Public関数"
|
193
|
+
|
194
|
+
Public Overrides Function ToString() As String
|
195
|
+
Return Value
|
196
|
+
End Function
|
197
|
+
|
174
198
|
#End Region
|
175
199
|
|
200
|
+
#Region "演算子オーバーロード"
|
201
|
+
|
202
|
+
Public Shared Operator =(ByVal lhs As AbstractEnumString, ByVal rhs As AbstractEnumString) As Boolean
|
203
|
+
Return (String.Compare(lhs, rhs) = 0)
|
204
|
+
End Operator
|
205
|
+
|
206
|
+
Public Shared Operator <>(ByVal lhs As AbstractEnumString, ByVal rhs As AbstractEnumString) As Boolean
|
207
|
+
Return (String.Compare(lhs, rhs) <> 0)
|
208
|
+
End Operator
|
209
|
+
|
210
|
+
Public Shared Operator >(ByVal lhs As AbstractEnumString, ByVal rhs As AbstractEnumString) As Boolean
|
211
|
+
Return (String.Compare(lhs, rhs) > 0)
|
212
|
+
End Operator
|
213
|
+
|
214
|
+
Public Shared Operator >=(ByVal lhs As AbstractEnumString, ByVal rhs As AbstractEnumString) As Boolean
|
215
|
+
Return (String.Compare(lhs, rhs) >= 0)
|
216
|
+
End Operator
|
217
|
+
|
218
|
+
Public Shared Operator <(ByVal lhs As AbstractEnumString, ByVal rhs As AbstractEnumString) As Boolean
|
219
|
+
Return (String.Compare(lhs, rhs) < 0)
|
220
|
+
End Operator
|
221
|
+
|
222
|
+
Public Shared Operator <=(ByVal lhs As AbstractEnumString, ByVal rhs As AbstractEnumString) As Boolean
|
223
|
+
Return (String.Compare(lhs, rhs) <= 0)
|
224
|
+
End Operator
|
225
|
+
|
226
|
+
Public Shared Operator &(ByVal lhs As AbstractEnumString, ByVal rhs As AbstractEnumString) As String
|
227
|
+
If lhs Is Nothing AndAlso rhs Is Nothing Then Return String.Empty
|
228
|
+
If lhs Is Nothing Then Return rhs
|
229
|
+
If rhs Is Nothing Then Return lhs
|
230
|
+
Return lhs.Value & rhs.Value
|
231
|
+
End Operator
|
232
|
+
|
233
|
+
Public Shared Widening Operator CType(value As AbstractEnumString) As String
|
234
|
+
If value Is Nothing Then Return Nothing
|
235
|
+
Return value.ToString
|
236
|
+
End Operator
|
237
|
+
|
238
|
+
Public Shared Narrowing Operator CType(value As String) As AbstractEnumString
|
239
|
+
Return New AbstractEnumString(value)
|
240
|
+
End Operator
|
241
|
+
|
242
|
+
#End Region
|
243
|
+
|
176
244
|
End Class
|
245
|
+
End Module
|
177
246
|
|
178
|
-
End Namespace
|
179
|
-
|
180
247
|
```
|
181
248
|
|
182
249
|
### 試したこと
|
3
コメントの指摘に基づき内容を追記。
title
CHANGED
File without changes
|
body
CHANGED
@@ -28,9 +28,23 @@
|
|
28
28
|
```VB
|
29
29
|
Private Sub PrintLabel(ByVal condition As MyCondition)
|
30
30
|
Dim labelData = New MyClass With {
|
31
|
-
|
31
|
+
.ProductId = condition.ProductId,
|
32
|
-
|
32
|
+
.ProductName = condition.ProductName
|
33
|
+
.AAA = condition.AAA,
|
34
|
+
.BBB = condition.DetailList.Where(Function(p) p.VesselNumber > 0).Count(),
|
35
|
+
.CCC = condition.ShelfLife,
|
36
|
+
.DDD = Date.Parse(DateTime.Parse(condition.CreateDate)),
|
37
|
+
.EEE = condition.EEE,
|
38
|
+
.FFF = MstPreparation.LabelSize.Middle,
|
39
|
+
.GGG = condition.GGG,
|
33
|
-
|
40
|
+
.HHH = 0,
|
41
|
+
.III = MyClass.LabelTypeEnum.Box,
|
42
|
+
.JJJ = preparation.JJJ,
|
43
|
+
.KKK = preparation.KKK,
|
44
|
+
.LLL = preparation.LLL,
|
45
|
+
.MMM = preparation.MMM,
|
46
|
+
.NNN = preparation.NNN,
|
47
|
+
.OOO = New List(Of UsingIngredientDto)
|
34
48
|
}
|
35
49
|
|
36
50
|
LabelPrintUtils.PrintProductLabel(labelData, Config.PrinterName)
|
@@ -44,6 +58,127 @@
|
|
44
58
|
|
45
59
|
```
|
46
60
|
|
61
|
+
```VB
|
62
|
+
Namespace NH
|
63
|
+
|
64
|
+
'labelDataにNewしているクラスです。
|
65
|
+
|
66
|
+
Public Class MyClass
|
67
|
+
|
68
|
+
#Region "Enum"
|
69
|
+
|
70
|
+
Public Enum LabelTypeEnum
|
71
|
+
|
72
|
+
''' <summary>商品</summary>
|
73
|
+
Product = 1
|
74
|
+
|
75
|
+
''' <summary>商品の箱</summary>
|
76
|
+
Box = 2
|
77
|
+
|
78
|
+
End Enum
|
79
|
+
|
80
|
+
#End Region
|
81
|
+
|
82
|
+
#Region "プロパティ"
|
83
|
+
|
84
|
+
''' <summary>商品ID</summary>
|
85
|
+
Public Property ProductId As Integer
|
86
|
+
|
87
|
+
''' <summary>商品名</summary>
|
88
|
+
Public Property ProductName As String
|
89
|
+
|
90
|
+
'以降、諸事情で名称を変更しています。ご了承ください。
|
91
|
+
|
92
|
+
Public Property AAA As String
|
93
|
+
Public Property BBB As Decimal
|
94
|
+
Public Property CCC As Date
|
95
|
+
Public Property DDD As Date
|
96
|
+
Public Property EEE As Decimal
|
97
|
+
Public Property FFF As String
|
98
|
+
Public Property GGG As String
|
99
|
+
Public Property HHH As Decimal
|
100
|
+
Public Property III As String
|
101
|
+
Public Property JJJ As MstTable.LabelSize
|
102
|
+
Public Property KKK As Boolean
|
103
|
+
Public Property LLL As Integer
|
104
|
+
Public Property MMM As Integer
|
105
|
+
Public Property NNN As LabelTypeEnum
|
106
|
+
Public Property OOO As List(Of MyDto)
|
107
|
+
|
108
|
+
#End Region
|
109
|
+
|
110
|
+
End Class
|
111
|
+
|
112
|
+
End Namespace
|
113
|
+
```
|
114
|
+
|
115
|
+
```VB
|
116
|
+
Namespace NT
|
117
|
+
|
118
|
+
'MyClass.JJJに使用しているクラスです。
|
119
|
+
|
120
|
+
Public NotInheritable Class MstTable
|
121
|
+
|
122
|
+
Private Sub New() : End Sub
|
123
|
+
|
124
|
+
''' <summary>
|
125
|
+
''' ラベルサイズ
|
126
|
+
''' </summary>
|
127
|
+
''' <completionlist cref="LabelSize" />
|
128
|
+
<Serializable>
|
129
|
+
Public NotInheritable Class LabelSize
|
130
|
+
Inherits AbstractEnumString
|
131
|
+
|
132
|
+
''' <summary>1:小</summary>
|
133
|
+
Public Shared ReadOnly Property Small As New LabelSize("1")
|
134
|
+
|
135
|
+
''' <summary>2:中</summary>
|
136
|
+
Public Shared ReadOnly Property Middle As New LabelSize("2")
|
137
|
+
|
138
|
+
''' <summary>3:大</summary>
|
139
|
+
Public Shared ReadOnly Property Large As New LabelSize("3")
|
140
|
+
|
141
|
+
Private Sub New(ByVal value As String)
|
142
|
+
MyBase.New(value)
|
143
|
+
End Sub
|
144
|
+
|
145
|
+
Public Overloads Shared Narrowing Operator CType(value As String) As LabelSize
|
146
|
+
Return New LabelSize(value)
|
147
|
+
End Operator
|
148
|
+
|
149
|
+
End Class
|
150
|
+
|
151
|
+
End Class
|
152
|
+
|
153
|
+
End Namespace
|
154
|
+
```
|
155
|
+
|
156
|
+
```VB
|
157
|
+
Namespace HPMS
|
158
|
+
|
159
|
+
'MyClass.OOOに使用しているクラスです。
|
160
|
+
|
161
|
+
Public Class MyDto
|
162
|
+
|
163
|
+
#Region "プロパティ"
|
164
|
+
|
165
|
+
''' <summary>名称</summary>
|
166
|
+
Public Property Name As String
|
167
|
+
|
168
|
+
''' <summary>用量</summary>
|
169
|
+
Public Property Dose As String
|
170
|
+
|
171
|
+
''' <summary>単位</summary>
|
172
|
+
Public Property Unit As String
|
173
|
+
|
174
|
+
#End Region
|
175
|
+
|
176
|
+
End Class
|
177
|
+
|
178
|
+
End Namespace
|
179
|
+
|
180
|
+
```
|
181
|
+
|
47
182
|
### 試したこと
|
48
183
|
|
49
184
|
検索しようとは思ったが、上記のように説明することは出来ても
|
2
誤字修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -4,10 +4,11 @@
|
|
4
4
|
例外の原因は「IEnumerable(Of MyClass)を引数とするメソッドに、MyClassを投げていたため」でした。
|
5
5
|
(下記のプログラムを参照してください。)
|
6
6
|
IEnumerable(Of MyClass)を引数とするメソッドにIntegerを投げれば実行前に教えてくれるので、
|
7
|
-
|
7
|
+
同様にIEnumerable(Of MyClass)を引数とするメソッドに、MyClassを投げていたら「型が違う」と教えてくれないのだろうか? と疑問に思い、質問を立ち上げました。
|
8
8
|
|
9
9
|
- 過去はエラーを出していたが後になって実装された機能に追従して変更されたのか
|
10
10
|
- エラーにすると記述できないプログラム構文があるのか
|
11
|
+
- 設定すればエラーになるようにできるのか
|
11
12
|
- 特に理由は無いのか
|
12
13
|
|
13
14
|
参考になるサイト等、ご存知でしたらご教授いただければ幸いです。
|
1
説明文の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -3,9 +3,8 @@
|
|
3
3
|
プログラムを組んでいる際、例外に遭遇しました。
|
4
4
|
例外の原因は「IEnumerable(Of MyClass)を引数とするメソッドに、MyClassを投げていたため」でした。
|
5
5
|
(下記のプログラムを参照してください。)
|
6
|
-
屁理屈を申し上げますと「これぐらいコンパイルの時に教えてくれよ」という感想です。
|
7
6
|
IEnumerable(Of MyClass)を引数とするメソッドにIntegerを投げれば実行前に教えてくれるので、
|
8
|
-
動揺にIEnumerable(Of MyClass)を引数とするメソッドに、MyClassを投げていたら型が違うと教えて
|
7
|
+
動揺にIEnumerable(Of MyClass)を引数とするメソッドに、MyClassを投げていたら型が違うと教えてくれないのだろうか? と疑問に思い、質問を立ち上げました。
|
9
8
|
|
10
9
|
- 過去はエラーを出していたが後になって実装された機能に追従して変更されたのか
|
11
10
|
- エラーにすると記述できないプログラム構文があるのか
|