} // GetNewDelayedPropertyDeclaration(elementBuilder, oldProperty) /// <summary> /// Get new property declaration /// </summary> private string GetNewPropertyDeclaration(ElementBuilder elementBuilder, Property oldProperty) { string propName = oldProperty.Name; string typeName = oldProperty.GetTypeName(); string fieldVariableName = CodeRush.Strings.Get("FormatFieldName", propName); Variable fieldVar = elementBuilder.AddVariable(null, typeName, fieldVariableName); fieldVar.IsStatic = oldProperty.IsStatic; fieldVar.Visibility = MemberVisibility.Private; Property newProperty = elementBuilder.AddProperty(null, typeName, propName); newProperty.Visibility = oldProperty.Visibility; newProperty.IsStatic = oldProperty.IsStatic; newProperty.IsVirtual = oldProperty.IsVirtual; newProperty.IsOverride = oldProperty.IsOverride; newProperty.IsExplicitInterfaceMember = oldProperty.IsExplicitInterfaceMember; if (oldProperty.HasGetter) { Get getter = elementBuilder.AddGetter(newProperty); elementBuilder.AddReturn(getter, fieldVariableName); } if (oldProperty.HasSetter) { Set setter = elementBuilder.AddSetter(newProperty); ExpressionCollection expressionCollection = new ExpressionCollection(); expressionCollection.Add(new PrimitiveExpression(String.Format("\"{0}\"", propName))); expressionCollection.Add(new ArgumentDirectionExpression(ArgumentDirection.Ref, new ElementReferenceExpression(fieldVariableName))); expressionCollection.Add(new ElementReferenceExpression("value")); elementBuilder.AddMethodCall(setter, "SetPropertyValue", expressionCollection, null); } // if return elementBuilder.GenerateCode(); } // GetNewPropertyDeclaration(elementBuilder, oldProperty)
} // refactoringProvider_Apply(sender, ea) /// <summary> /// Get new delayed property declaration /// </summary> private string GetNewDelayedPropertyDeclaration(ElementBuilder elementBuilder, Property oldProperty) { string propName = oldProperty.Name; string typeName = oldProperty.GetTypeName(); Property newProperty = elementBuilder.AddProperty(null, typeName, propName); newProperty.Visibility = oldProperty.Visibility; newProperty.IsStatic = oldProperty.IsStatic; newProperty.IsVirtual = oldProperty.IsVirtual; newProperty.IsOverride = oldProperty.IsOverride; newProperty.IsExplicitInterfaceMember = oldProperty.IsExplicitInterfaceMember; AttributeSection attrSection = elementBuilder.AddAttributeSection(newProperty); elementBuilder.AddAttribute(attrSection, "Delayed"); if (oldProperty.HasGetter) { Get getter = elementBuilder.AddGetter(newProperty); ExpressionCollection expressionCollection = new ExpressionCollection(); expressionCollection.Add(new PrimitiveExpression(String.Format("\"{0}\"", propName))); string methodName = String.Format("GetDelayedPropertyValue<{0}>", typeName); elementBuilder.AddReturn(getter, elementBuilder.BuildMethodCall(methodName, expressionCollection, null)); } if (oldProperty.HasSetter) { Set setter = elementBuilder.AddSetter(newProperty); ExpressionCollection expressionCollection = new ExpressionCollection(); expressionCollection.Add(new PrimitiveExpression(String.Format("\"{0}\"", propName))); expressionCollection.Add(new ElementReferenceExpression("value")); string methodName = String.Format("SetDelayedPropertyValue<{0}>", typeName); elementBuilder.AddMethodCall(setter, methodName, expressionCollection, null); } // if return elementBuilder.GenerateCode(); } // GetNewDelayedPropertyDeclaration(elementBuilder, oldProperty)