回答編集履歴

5

追記

2020/03/24 08:35

投稿

Zuishin
Zuishin

スコア28660

test CHANGED
@@ -229,3 +229,25 @@
229
229
  }
230
230
 
231
231
  ```
232
+
233
+
234
+
235
+ ### 追記
236
+
237
+
238
+
239
+ ```C#
240
+
241
+ IComparer と同様ダミーが気持ち悪いですが、これでキャストできますね。
242
+
243
+
244
+
245
+ List<T> ListFromDynamic<T>(dynamic list, T dummy)
246
+
247
+ {
248
+
249
+ return (List<T>)list;
250
+
251
+ }
252
+
253
+ ```

4

修正

2020/03/24 08:35

投稿

Zuishin
Zuishin

スコア28660

test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
 
6
6
 
7
- 他のコードはともかく、できるところから dynamic を排除していくのをお勧めします。多用するものではありません。
7
+ 他のコードはともかく、できるところから dynamic を排除していくのをお勧めします。多用するものではありません。あと、匿名型を使う必然性も全く感じられません。これだけ再利用するのであれば普通に名前をつけたらいいと思います。
8
8
 
9
9
 
10
10
 

3

修正

2020/03/24 04:01

投稿

Zuishin
Zuishin

スコア28660

test CHANGED
@@ -198,7 +198,7 @@
198
198
 
199
199
 
200
200
 
201
- ### 追記 ICompare<T> を使う場合(未検証)
201
+ ### 追記 IComparer<T> を使う場合(未検証)
202
202
 
203
203
 
204
204
 

2

追記

2020/03/24 03:41

投稿

Zuishin
Zuishin

スコア28660

test CHANGED
@@ -195,3 +195,37 @@
195
195
  }
196
196
 
197
197
  ```
198
+
199
+
200
+
201
+ ### 追記 ICompare<T> を使う場合(未検証)
202
+
203
+
204
+
205
+ ```C#
206
+
207
+ var comparer = new Comparer(new { Choise = "", Count = 0 });
208
+
209
+ item.result.Sort(comparer);
210
+
211
+
212
+
213
+ class Comparer<T> : IComparer<T>
214
+
215
+ {
216
+
217
+ public Comparer(T dummy) {}
218
+
219
+
220
+
221
+ public int Compare([AllowNull] T x, [AllowNull] T y)
222
+
223
+ {
224
+
225
+ return string.Compare(((dynamic)x).Choise, ((dynamic)y).Choise);
226
+
227
+ }
228
+
229
+ }
230
+
231
+ ```

1

修正

2020/03/24 03:40

投稿

Zuishin
Zuishin

スコア28660

test CHANGED
@@ -140,7 +140,7 @@
140
140
 
141
141
  var listType = typeof(List<>)
142
142
 
143
- .MakeGenericType(new{ Choise = "", Count = 0 }.GetType());
143
+ .MakeGenericType(itemType);
144
144
 
145
145
  var sortMethod = listType.GetMethod("Sort", new[] { comparisonType });
146
146