diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeType.cs b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeType.cs index 7156281148..c9dfeabcb4 100644 --- a/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeType.cs +++ b/src/AddIns/Misc/PackageManagement/Project/Src/EnvDTE/CodeType.cs @@ -8,6 +8,8 @@ namespace ICSharpCode.PackageManagement.EnvDTE { public class CodeType : CodeElement { + CodeTypeMembers members; + /// /// Note that projectContent may be different to the IClass.ProjectContent since the class /// is retrieved from the namespace contents and could belong to a separate project or @@ -46,7 +48,12 @@ namespace ICSharpCode.PackageManagement.EnvDTE } public virtual CodeElements Members { - get { return new CodeTypeMembers(ProjectContent, Class); } + get { + if (members == null) { + members = new CodeTypeMembers(ProjectContent, Class); + } + return members; + } } public virtual CodeElements Bases { diff --git a/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeClass2Tests.cs b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeClass2Tests.cs index 86856ce4e3..1f69713ee0 100644 --- a/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeClass2Tests.cs +++ b/src/AddIns/Misc/PackageManagement/Test/Src/EnvDTE/CodeClass2Tests.cs @@ -2,6 +2,7 @@ // This code is distributed under the GNU LGPL (for details please see \doc\license.txt) using System; +using System.Collections.Generic; using ICSharpCode.PackageManagement.EnvDTE; using ICSharpCode.SharpDevelop.Dom; using NUnit.Framework; @@ -261,5 +262,21 @@ namespace PackageManagement.Tests.EnvDTE Assert.AreEqual(1, partialClasses.Count); Assert.AreEqual(codeClass, firstClass); } + + [Test] + public void Members_GetFirstPropertyTwice_PropertiesAreConsideredEqualWhenAddedToList() + { + CreateProjectContent(); + CreatePublicClass("MyClass"); + helper.AddPropertyToClass("MyClass.MyProperty"); + CodeProperty2 property = codeClass.Members.FirstCodeProperty2OrDefault(); + var properties = new List(); + properties.Add(property); + + CodeProperty2 property2 = codeClass.Members.FirstCodeProperty2OrDefault(); + + bool contains = properties.Contains(property2); + Assert.IsTrue(contains); + } } }