Fix potential order inconsistency of element and property lists.

This commit is contained in:
2023-03-03 11:45:16 +08:00
parent 215f72b3b5
commit da60dc0903
12 changed files with 134 additions and 27 deletions

View File

@@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
namespace Cryville.Common.Collections.Generic {
public class PairList : List<KeyValuePair<object, object>>, IPairList {
public void Add(object key, object value) {
Add(new KeyValuePair<object, object>(key, value));
}
}
public class PairList<TKey, TValue> : List<KeyValuePair<TKey, TValue>>, IPairList<TKey, TValue> {
public void Add(TKey key, TValue value) {
Add(new KeyValuePair<TKey, TValue>(key, value));
}
public void Add(object key, object value) {
try {
Add((TKey)key, (TValue)value);
}
catch (InvalidCastException) {
throw new ArgumentException("Wrong key type or value type");
}
}
}
}