Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit aa53ee5

Browse files
committed
Add UX-friendly ObjectDictionary
1 parent c47206a commit aa53ee5

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
using System.Collections.Generic;
2+
using System.Runtime.Serialization;
3+
4+
namespace ServiceStack.Text
5+
{
6+
/// <summary>
7+
/// UX friendly alternative alias of Dictionary&lt;string, object&gt;
8+
/// </summary>
9+
public class ObjectDictionary : Dictionary<string, object>
10+
{
11+
public ObjectDictionary() { }
12+
public ObjectDictionary(int capacity) : base(capacity) { }
13+
public ObjectDictionary(IEqualityComparer<string> comparer) : base(comparer) { }
14+
public ObjectDictionary(int capacity, IEqualityComparer<string> comparer) : base(capacity, comparer) { }
15+
public ObjectDictionary(IDictionary<string, object> dictionary) : base(dictionary) { }
16+
public ObjectDictionary(IDictionary<string, object> dictionary, IEqualityComparer<string> comparer) : base(dictionary, comparer) { }
17+
protected ObjectDictionary(SerializationInfo info, StreamingContext context) : base(info, context) { }
18+
}
19+
}

tests/ServiceStack.Text.Tests/AutoMappingTests.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -751,10 +751,16 @@ public void Can_convert_between_different_types_of_Dictionaries_and_KVP_values()
751751
var stringKvps = new List<KeyValuePair<string, string>> {
752752
new KeyValuePair<string, string>("a", "1")
753753
};
754+
var objDict = new ObjectDictionary {
755+
{ "a", 1 }
756+
};
754757

755758
var genericMapStringValue = new Dictionary<string, object> {
756759
{ "a", "1" }
757760
};
761+
var objDictStringValue = new ObjectDictionary {
762+
{ "a", "1" }
763+
};
758764
var kvpsStringValue = new List<KeyValuePair<string, object>> {
759765
new KeyValuePair<string, object>("a", "1")
760766
};
@@ -764,30 +770,35 @@ public void Can_convert_between_different_types_of_Dictionaries_and_KVP_values()
764770
Assert.That(genericMap.ConvertTo<Dictionary<string,int>>(), Is.EquivalentTo(intMap));
765771
Assert.That(genericMap.ConvertTo<List<KeyValuePair<string, object>>>(), Is.EquivalentTo(kvps));
766772
Assert.That(genericMap.ConvertTo<List<KeyValuePair<string, string>>>(), Is.EquivalentTo(stringKvps));
773+
Assert.That(genericMap.ConvertTo<ObjectDictionary>(), Is.EquivalentTo(objDict));
767774

768775
Assert.That(stringMap.ConvertTo<Dictionary<string,object>>(), Is.EquivalentTo(genericMapStringValue));
769776
Assert.That(stringMap.ConvertTo<Dictionary<string,string>>(), Is.EquivalentTo(stringMap));
770777
Assert.That(stringMap.ConvertTo<Dictionary<string,int>>(), Is.EquivalentTo(intMap));
771778
Assert.That(stringMap.ConvertTo<List<KeyValuePair<string, object>>>(), Is.EquivalentTo(kvpsStringValue));
772779
Assert.That(stringMap.ConvertTo<List<KeyValuePair<string, string>>>(), Is.EquivalentTo(stringKvps));
780+
Assert.That(stringMap.ConvertTo<ObjectDictionary>(), Is.EquivalentTo(objDictStringValue));
773781

774782
Assert.That(intMap.ConvertTo<Dictionary<string,object>>(), Is.EquivalentTo(genericMap));
775783
Assert.That(intMap.ConvertTo<Dictionary<string,string>>(), Is.EquivalentTo(stringMap));
776784
Assert.That(intMap.ConvertTo<Dictionary<string,int>>(), Is.EquivalentTo(intMap));
777785
Assert.That(intMap.ConvertTo<List<KeyValuePair<string, object>>>(), Is.EquivalentTo(kvps));
778786
Assert.That(intMap.ConvertTo<List<KeyValuePair<string, string>>>(), Is.EquivalentTo(stringKvps));
787+
Assert.That(intMap.ConvertTo<ObjectDictionary>(), Is.EquivalentTo(objDict));
779788

780789
Assert.That(kvps.ConvertTo<Dictionary<string,object>>(), Is.EquivalentTo(genericMap));
781790
Assert.That(kvps.ConvertTo<Dictionary<string,string>>(), Is.EquivalentTo(stringMap));
782791
Assert.That(kvps.ConvertTo<Dictionary<string,int>>(), Is.EquivalentTo(intMap));
783792
Assert.That(kvps.ConvertTo<List<KeyValuePair<string, object>>>(), Is.EquivalentTo(kvps));
784793
Assert.That(kvps.ConvertTo<List<KeyValuePair<string, string>>>(), Is.EquivalentTo(stringKvps));
794+
Assert.That(kvps.ConvertTo<ObjectDictionary>(), Is.EquivalentTo(objDict));
785795

786796
Assert.That(stringKvps.ConvertTo<Dictionary<string,object>>(), Is.EquivalentTo(genericMapStringValue));
787797
Assert.That(stringKvps.ConvertTo<Dictionary<string,string>>(), Is.EquivalentTo(stringMap));
788798
Assert.That(stringKvps.ConvertTo<Dictionary<string,int>>(), Is.EquivalentTo(intMap));
789799
Assert.That(stringKvps.ConvertTo<List<KeyValuePair<string, object>>>(), Is.EquivalentTo(kvpsStringValue));
790800
Assert.That(stringKvps.ConvertTo<List<KeyValuePair<string, string>>>(), Is.EquivalentTo(stringKvps));
801+
Assert.That(stringKvps.ConvertTo<ObjectDictionary>(), Is.EquivalentTo(objDictStringValue));
791802
}
792803

793804
[Test]

0 commit comments

Comments
 (0)