Dashing.CodeGeneration.ProxyGenerator.GenerateGetSetProperty C# (CSharp) Method

GenerateGetSetProperty() private method

private GenerateGetSetProperty ( CodeTypeDeclaration owningClass, string name, Type type, MemberAttributes attributes, bool useBaseProperty = false ) : CodeMemberProperty
owningClass System.CodeDom.CodeTypeDeclaration
name string
type System.Type
attributes MemberAttributes
useBaseProperty bool
return System.CodeDom.CodeMemberProperty
        private CodeMemberProperty GenerateGetSetProperty(
            CodeTypeDeclaration owningClass, 
            string name, 
            Type type, 
            MemberAttributes attributes, 
            bool useBaseProperty = false) {
            // generate the property
            var prop = new CodeMemberProperty();
            prop.Name = name;
            prop.Type = new CodeTypeReference(type);
            prop.Attributes = attributes;

            if (useBaseProperty) {
                prop.GetStatements.Add(
                    new CodeMethodReturnStatement(CodeHelpers.BaseProperty(name)));
                prop.SetStatements.Add(
                    new CodeAssignStatement(
                        CodeHelpers.BaseProperty(name), 
                        new CodePropertySetValueReferenceExpression()));
            }
            else {
                // generate the backing field for this property
                var backingField = new CodeMemberField();
                backingField.Name = "backing" + name;
                backingField.Type = new CodeTypeReference(type);
                owningClass.Members.Add(backingField);

                prop.GetStatements.Add(
                    new CodeMethodReturnStatement(CodeHelpers.ThisField(backingField.Name)));
                prop.SetStatements.Add(
                    new CodeAssignStatement(
                        CodeHelpers.ThisField(backingField.Name), 
                        new CodePropertySetValueReferenceExpression()));
            }

            owningClass.Members.Add(prop);

            return prop;
        }
    }