diff --git a/src/ACadSharp.Tests/CadDocumentTests.cs b/src/ACadSharp.Tests/CadDocumentTests.cs index c01c4b720..54ff8a9b7 100644 --- a/src/ACadSharp.Tests/CadDocumentTests.cs +++ b/src/ACadSharp.Tests/CadDocumentTests.cs @@ -443,4 +443,19 @@ public void SetCurrentTest() doc.SetCurrent(new MultiLeaderStyle(multiLeaderStyleName)); Assert.True(doc.MLeaderStyles.ContainsKey(multiLeaderStyleName)); } + + [Fact] + public void TryGetCadObjectTypeMismatch() + { + CadDocument doc = new CadDocument(); + + Line line = new Line(); + doc.Entities.Add(line); + + Assert.True(doc.TryGetCadObject(line.Handle, out Line found)); + Assert.Equal(line, found); + + Assert.False(doc.TryGetCadObject(line.Handle, out Circle circle)); + Assert.Null(circle); + } } \ No newline at end of file diff --git a/src/ACadSharp/CadDocument.cs b/src/ACadSharp/CadDocument.cs index f9b639cff..9cd5e4330 100644 --- a/src/ACadSharp/CadDocument.cs +++ b/src/ACadSharp/CadDocument.cs @@ -490,9 +490,9 @@ public bool TryGetCadObject(ulong handle, out T cadObject) if (handle == this.Handle) return false; - if (this._cadObjects.TryGetValue(handle, out IHandledCadObject obj)) + if (this._cadObjects.TryGetValue(handle, out IHandledCadObject obj) && obj is T) { - cadObject = obj as T; + cadObject = (T)obj; return true; }