diff --git a/mocha-dotnet/src/lib/Mocha.Core/Oms.cs b/mocha-dotnet/src/lib/Mocha.Core/Oms.cs
index 2da49be..47ea475 100644
--- a/mocha-dotnet/src/lib/Mocha.Core/Oms.cs
+++ b/mocha-dotnet/src/lib/Mocha.Core/Oms.cs
@@ -32,6 +32,7 @@ using System.Text;
using System.Text.Json.Nodes;
using System.Xml.XPath;
using MBS.Core;
+using MBS.Core.Collections;
using MBS.Core.Extensibility;
using MBS.Core.IO;
using Mocha.Core.MethodImplementations;
@@ -510,6 +511,11 @@ public abstract class Oms
}
public InstanceHandle CreateInstanceOf(IInstanceReference ir_class, Guid guid)
{
+ if (TryGetInstance(guid, out InstanceHandle ihAlreadyExists))
+ {
+ throw new DuplicateKeyException();
+ }
+
if (GetParentClass(ir_class) != GetInstance(KnownInstanceGuids.Classes.Class))
{
throw new InvalidOperationException("cannot create instance of something that is not a Class");
diff --git a/mocha-dotnet/tests/Mocha.Core.Tests/BasicTests.cs b/mocha-dotnet/tests/Mocha.Core.Tests/BasicTests.cs
index bc5a478..f1d4251 100644
--- a/mocha-dotnet/tests/Mocha.Core.Tests/BasicTests.cs
+++ b/mocha-dotnet/tests/Mocha.Core.Tests/BasicTests.cs
@@ -16,8 +16,8 @@
// along with Mocha.NET. If not, see .
using System.Runtime.CompilerServices;
-
-using Mocha.Core.OmsImplementations.Mini;
+using MBS.Core.Collections;
+using Mocha.Core.Oop;
namespace Mocha.Core.Tests;
@@ -168,4 +168,13 @@ public class BasicTests : OmsTestsBase
Assert.That(ihTextAttribute2, Is.EqualTo(ihTextAttribute));
}
-}
\ No newline at end of file
+ [Test]
+ public void Create_Instance_with_Existing_Global_Identifier_Fails()
+ {
+ Assert.Throws(delegate ()
+ {
+ InstanceHandle c_Attribute = Oms.CreateInstanceOf(Oms.GetInstance(KnownInstanceGuids.Classes.Class), KnownInstanceGuids.Classes.Attribute);
+ });
+ }
+
+}
diff --git a/mocha-dotnet/tests/Mocha.Core.Tests/OmsTestsBase.cs b/mocha-dotnet/tests/Mocha.Core.Tests/OmsTestsBase.cs
index 4f88be6..a84d265 100644
--- a/mocha-dotnet/tests/Mocha.Core.Tests/OmsTestsBase.cs
+++ b/mocha-dotnet/tests/Mocha.Core.Tests/OmsTestsBase.cs
@@ -51,13 +51,13 @@ public abstract class OmsTestsBase
// create the Test Class
InstanceHandle c_Class = Oms.GetInstance(KnownInstanceGuids.Classes.Class);
- InstanceHandle irTestClass = Oms.CreateInstanceOf(c_Class, TEST_CLASS_GUID);
+ InstanceHandle irTestClass = Oms.GetInstance(TEST_CLASS_GUID);
Assert.That(irTestClass, Is.Not.EqualTo(InstanceHandle.Empty));
InstanceHandle a_Name = Oms.GetInstance(KnownAttributeGuids.Text.Name);
Oms.SetAttributeValue(irTestClass, a_Name, "Test Class");
- InstanceHandle irTestClass2 = Oms.CreateInstanceOf(c_Class, TEST_CLASS2_GUID);
+ InstanceHandle irTestClass2 = Oms.GetInstance(TEST_CLASS2_GUID);
Assert.That(irTestClass2, Is.Not.EqualTo(InstanceHandle.Empty));
Oms.SetAttributeValue(irTestClass2, Oms.GetInstance(KnownAttributeGuids.Text.Name), "Test Class 2");