summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Xamarin.Forms.Core.UnitTests/ResourceDictionaryTests.cs14
-rw-r--r--Xamarin.Forms.Core/ResourceDictionary.cs2
2 files changed, 16 insertions, 0 deletions
diff --git a/Xamarin.Forms.Core.UnitTests/ResourceDictionaryTests.cs b/Xamarin.Forms.Core.UnitTests/ResourceDictionaryTests.cs
index e5b8b60d..9a2c6f01 100644
--- a/Xamarin.Forms.Core.UnitTests/ResourceDictionaryTests.cs
+++ b/Xamarin.Forms.Core.UnitTests/ResourceDictionaryTests.cs
@@ -292,5 +292,19 @@ namespace Xamarin.Forms.Core.UnitTests
Assert.True(rd0.TryGetMergedValue("foo", out _));
Assert.AreEqual("Foo", _);
}
+
+ [Test]
+ public void ThrowOnDuplicateKey()
+ {
+ var rd0 = new ResourceDictionary();
+ rd0.Add("foo", "Foo");
+ try {
+ rd0.Add("foo", "Bar");
+ } catch (ArgumentException ae) {
+ Assert.AreEqual("A resource with the key 'foo' is already present in the ResourceDictionary.", ae.Message);
+ Assert.Pass();
+ }
+ Assert.Fail();
+ }
}
} \ No newline at end of file
diff --git a/Xamarin.Forms.Core/ResourceDictionary.cs b/Xamarin.Forms.Core/ResourceDictionary.cs
index ed3ea7f5..a213dee5 100644
--- a/Xamarin.Forms.Core/ResourceDictionary.cs
+++ b/Xamarin.Forms.Core/ResourceDictionary.cs
@@ -72,6 +72,8 @@ namespace Xamarin.Forms
public void Add(string key, object value)
{
+ if (ContainsKey(key))
+ throw new ArgumentException($"A resource with the key '{key}' is already present in the ResourceDictionary.");
_innerDictionary.Add(key, value);
OnValueChanged(key, value);
}