質問編集履歴

1

その後の処理で詰まった。

2020/04/03 09:49

投稿

ishizaku
ishizaku

スコア4

test CHANGED
File without changes
test CHANGED
@@ -154,6 +154,62 @@
154
154
 
155
155
 
156
156
 
157
- ### その後にやりたいこと
157
+ ### その後
158
+
158
-
159
+ とりあえず例に挙げていたList<string>のキャストはできることができました。
160
+
161
+ ```C#
162
+
163
+ public static explicit operator DropdownList<T>(List<string> target)
164
+
165
+ {
166
+
167
+ DropdownList<T> result = new DropdownList<T>();
168
+
169
+
170
+
171
+ foreach (var kvp in target)
172
+
173
+ {
174
+
175
+ result.Add(kvp.ToString(), kvp);
176
+
177
+ }
178
+
179
+ return result;
180
+
181
+ }
182
+
183
+ private void Add(string displayName, string value)
184
+
185
+ {
186
+
187
+ _values.Add(new KeyValuePair<string, object>(displayName, value));
188
+
189
+ }
190
+
191
+ ```
192
+
193
+ ・・・かなり強引は気はしますが…。
194
+
195
+
196
+
197
+ ですが、本番ではICollection<ProductCatalogItem>を入れたいと思っております。
198
+
199
+ なので、
200
+
201
+ public static explicit operator DropdownList<T>(ICollection<ProductCatalogItem> target)
202
+
203
+ と設定したところ以下のエラーが…
204
+
205
+ ```C#
206
+
159
- 現在はテストとしてList<string>で行っておりますが、List<構造体>ICollection<ProductCatalogItem>と言ったListもキャストして使いやすくしていきたく思って
207
+ 'DropdownList<T>.explicit operator DropdownList<T>(ICollection<ProductCatalogItem>)';インターフェイスの間にけるユーザー定義の変換は許可されせん
208
+
209
+ ```
210
+
211
+
212
+
213
+ こちらのエラーを回避する方法と、先ほどの強引な処理を綺麗にする方法などありますでしょうか?
214
+
215
+ よろしくお願いいたします。