private InterfaceProperty(InterfaceProperty ipToCopyFrom)
     : base(null)
 {
     ipToCopyFrom.CloneInto(this);
     if (ipToCopyFrom.DataType != null)
     {
         DataType = ipToCopyFrom.DataType.Clone();
     }
     HasNewKeyword = ipToCopyFrom.HasNewKeyword;
 }
        private bool IsTheSame(InterfaceProperty comparisonProperty, ComparisonDepth depth)
        {
            if (comparisonProperty == null)
            {
                return(false);
            }

            if (Name == comparisonProperty.Name)
            {
                // TODO: Parent Object Comparison
                //                if (ParentObject.IsTheSame(comparisonProperty.ParentObject))
                {
                    if (depth == ComparisonDepth.Signature)
                    {
                        return(true);
                    }

                    if (!base.IsTheSame(comparisonProperty, depth))
                    {
                        return(false);
                    }

                    if (DataType != comparisonProperty.DataType)
                    {
                        return(false);
                    }

                    if (depth == ComparisonDepth.Outer)
                    {
                        return(true);
                    }

                    if (!GetAccessor.IsTheSame(comparisonProperty.GetAccessor))
                    {
                        ComparisonDifference += GetType().Name + ".GetAccessor";
                        return(false);
                    }
                    if (!SetAccessor.IsTheSame(comparisonProperty.SetAccessor))
                    {
                        ComparisonDifference += GetType().Name + ".SetAccessor";
                        return(false);
                    }
                    return(true);
                }
            }
            return(false);
        }
        protected override bool CustomMergeStepInternal(BaseConstruct user, BaseConstruct newgen, BaseConstruct prevgen)
        {
            InterfaceProperty userBC = (InterfaceProperty)user, newgenBC = (InterfaceProperty)newgen, prevgenBC = (InterfaceProperty)prevgen;

            // Return Type
            if (!Utility.MergeDataType(ref DataType, userBC.DataType, newgenBC.DataType, prevgenBC.DataType))
            {
                return(false);
            }
            // HasNewKeyword
            if (!Utility.MergeSingleItem(ref HasNewKeyword, userBC.HasNewKeyword, newgenBC.HasNewKeyword, prevgenBC.HasNewKeyword))
            {
                return(false);
            }

            return(true);
        }
 private bool IsTheSame(InterfaceProperty comparisonProperty)
 {
     return(IsTheSame(comparisonProperty, ComparisonDepth.Signature));
 }