public static CodeTypeDeclaration GetEarlyBoundEntityClassDeclaration(CodeTypeDeclaration type)
        {
            var entityClass = new CodeTypeDeclaration(BaseEntityName)
            {
                IsClass        = true,
                TypeAttributes = TypeAttributes.Public | TypeAttributes.Abstract,
                BaseTypes      =
                {
                    new CodeTypeReference(typeof(Microsoft.Xrm.Sdk.Entity)),
                    new CodeTypeReference(typeof(System.ComponentModel.INotifyPropertyChanging)),
                    new CodeTypeReference(typeof(System.ComponentModel.INotifyPropertyChanged))
                }
            };

            AddEntityConstructors(entityClass);

            entityClass.Members.AddRange(type.Members.Cast <CodeTypeMember>().Where(p => BaseEntityMembers.Contains(p.Name)).Select(GetCodeTypeMember).ToArray());

            if (CustomizeCodeDomService.GenerateEnumProperties)
            {
                entityClass.Members.Add(EnumPropertyGenerator.CreateGetEnumMethod());
            }
            return(entityClass);
        }
        public static CodeTypeDeclaration GetUserEntity(CodeTypeDeclaration type)
        {
            var entityClass = new CodeTypeDeclaration(UserEntityName)
            {
                IsClass        = true,
                TypeAttributes = TypeAttributes.Public,
                BaseTypes      = { new CodeTypeReference(BaseEntityName) }
            };

            AddEntityConstructors(entityClass);

            var entityOnlyMembers = new HashSet <string>(UserEntityMembers.Where(m => !BaseEntityMembers.Contains(m)));

            entityClass.Members.AddRange(type.Members.Cast <CodeTypeMember>().Where(p => entityOnlyMembers.Contains(p.Name)).ToArray());

            return(entityClass);
        }