Dev2.Models.ExplorerItemModel.Clone C# (CSharp) Method

Clone() public method

public Clone ( ) : ExplorerItemModel
return ExplorerItemModel
        public ExplorerItemModel Clone()
        {
            ExplorerItemModel result = new ExplorerItemModel();
            var fieldInfos = GetType().GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
            foreach(FieldInfo field in fieldInfos)
            {
                if(field.FieldType.GetInterface("IList", false) == null)
                {
                    field.SetValue(result, field.GetValue(this));
                }
                else
                {
                    IList listObject = (IList)field.GetValue(result);
                    if(listObject != null)
                    {
                        foreach(ExplorerItemModel item in ((IList)field.GetValue(this)))
                        {
                            listObject.Add(item.Clone());
                        }
                    }
                }
            }
            return result;
        }

Same methods

ExplorerItemModel::Clone ( IConnectControlSingleton connectControlSingleton, IStudioResourceRepository studioResourceRepository ) : ExplorerItemModel

Usage Example

        // ReSharper disable MethodTooLong
        public void ExplorerItemModel_Clone_ReturnsNewObjectWithAllPropertiesSet()
        
        {
            //------------Setup for test--------------------------
            var connectControlSingleton = new Mock<IConnectControlSingleton>().Object;
            var explorerItemModel = new ExplorerItemModel(connectControlSingleton, new Mock<IStudioResourceRepository>().Object);
            var parentModel = new ExplorerItemModel(connectControlSingleton, new Mock<IStudioResourceRepository>().Object);
            explorerItemModel.DisplayName = "Test1";
            var childItemModel = new ExplorerItemModel(connectControlSingleton, new Mock<IStudioResourceRepository>().Object);
            explorerItemModel.Children.Add(childItemModel);
            explorerItemModel.EnvironmentId = Guid.NewGuid();
            explorerItemModel.Parent = parentModel;
            explorerItemModel.Permissions = Permissions.Contribute;
            explorerItemModel.ResourceId = Guid.NewGuid();
            explorerItemModel.ResourcePath = "TestResourcePath";
            explorerItemModel.ResourceType = ResourceType.PluginService;
            explorerItemModel.VersionInfo = new VersionInfo { VersionNumber = "2" , Reason = "Save", ResourceId =  Guid.NewGuid()};

            var properties = typeof(ExplorerItemModel).GetProperties();

            //------------Execute Test---------------------------
            var clonedItemModel = explorerItemModel.Clone(connectControlSingleton, new Mock<IStudioResourceRepository>().Object);
            //------------Assert Results-------------------------
            Assert.AreEqual(68, properties.Length);
            Assert.AreEqual(explorerItemModel.DisplayName, clonedItemModel.DisplayName);
            Assert.AreEqual(explorerItemModel.Children.Count, clonedItemModel.Children.Count);
            Assert.AreEqual(explorerItemModel.CanConnect, clonedItemModel.CanConnect);
            Assert.AreEqual(explorerItemModel.CanDelete, clonedItemModel.CanDelete);
            Assert.AreEqual(explorerItemModel.CanDebug, clonedItemModel.CanDebug);
            Assert.AreEqual(explorerItemModel.CanDeploy, clonedItemModel.CanDeploy);
            Assert.AreEqual(explorerItemModel.CanDisconnect, clonedItemModel.CanDisconnect);
            Assert.AreEqual(explorerItemModel.CanEdit, clonedItemModel.CanEdit);
            Assert.AreEqual(explorerItemModel.CanExecute, clonedItemModel.CanExecute);
            Assert.AreEqual(explorerItemModel.CanRemove, clonedItemModel.CanRemove);
            Assert.AreEqual(explorerItemModel.CanRename, clonedItemModel.CanRename);
            Assert.AreEqual(explorerItemModel.CanShowDependencies, clonedItemModel.CanShowDependencies);
            Assert.AreEqual(explorerItemModel.CanSelectDependencies, clonedItemModel.CanSelectDependencies);
            Assert.AreEqual(explorerItemModel.EnvironmentId, clonedItemModel.EnvironmentId);
            Assert.AreEqual(explorerItemModel.Parent, clonedItemModel.Parent);
            Assert.AreEqual(explorerItemModel.Permissions, clonedItemModel.Permissions);
            Assert.AreEqual(explorerItemModel.ResourceId, clonedItemModel.ResourceId);
            Assert.AreEqual(explorerItemModel.ResourcePath, clonedItemModel.ResourcePath);
            Assert.AreEqual(explorerItemModel.ResourceType, clonedItemModel.ResourceType);
            Assert.AreEqual(explorerItemModel.VersionInfo, clonedItemModel.VersionInfo);
        }