public TargetClass TryLoadTargetClass(CSClass csClass) { TargetClass returnValue = null; var uiClientPageAttribute = csClass.AttributeList.SingleOrDefault(i => i.TypeFullName == typeof(UIClientPageAttribute).FullName); if (uiClientPageAttribute != null) { returnValue = new TargetClass { SourceClassFullName = Convert.ToString(uiClientPageAttribute.GetAttributeParameter(0, "sourceClassFullName", true)), TargetClassFullName = csClass.ClassFullName, //ExpectedUrl = Convert.ToString(uiClientPageAttribute.GetAttributeParameter(1, "ExpectedUrl", false)) }; //If there is only one file, that is the user and designer file. //If there are two or more files and one ends with ".designer.cs", that is the designer file and the the first of the others is the user file //If there are two or more files and none ends with ".designer.cs", then the first one is the designer and user file if (csClass.FileRelativePathList.Count == 1) { returnValue.DesignerFileRelativePath = csClass.FileRelativePathList[0]; returnValue.UserFileRelativePath = csClass.FileRelativePathList[0]; } else if (csClass.FileRelativePathList.Count > 1) { returnValue.DesignerFileRelativePath = csClass.FileRelativePathList.FirstOrDefault(i => i.EndsWith(".designer.cs", StringComparison.CurrentCultureIgnoreCase)); if (string.IsNullOrEmpty(returnValue.DesignerFileRelativePath)) { returnValue.DesignerFileRelativePath = csClass.FileRelativePathList[0]; returnValue.UserFileRelativePath = csClass.FileRelativePathList[0]; } else { returnValue.UserFileRelativePath = csClass.FileRelativePathList.FirstOrDefault(i => i != returnValue.DesignerFileRelativePath); } } foreach (var csProperty in csClass.PropertyList) { var targetField = TryLoadField(csProperty); if (targetField != null) { returnValue.TargetFieldList.Add(targetField); } } } return(returnValue); }
public TargetClass TryLoadTargetClass(CSClass csClass) { TargetClass returnValue = null; var uiClientPageAttribute = csClass.AttributeList.SingleOrDefault(i => i.TypeFullName == typeof(UIClientPageAttribute).FullName); if (uiClientPageAttribute != null) { returnValue = new TargetClass { SourceClassFullName = Convert.ToString(uiClientPageAttribute.GetAttributeParameter(0, "sourceClassFullName", true)), TargetClassFullName = csClass.ClassFullName, //ExpectedUrl = Convert.ToString(uiClientPageAttribute.GetAttributeParameter(1, "ExpectedUrl", false)) }; //If there is only one file, that is the user and designer file. //If there are two or more files and one ends with ".designer.cs", that is the designer file and the the first of the others is the user file //If there are two or more files and none ends with ".designer.cs", then the first one is the designer and user file if (csClass.FileRelativePathList.Count == 1) { returnValue.DesignerFileRelativePath = csClass.FileRelativePathList[0]; returnValue.UserFileRelativePath = csClass.FileRelativePathList[0]; } else if (csClass.FileRelativePathList.Count > 1) { returnValue.DesignerFileRelativePath = csClass.FileRelativePathList.FirstOrDefault(i => i.EndsWith(".designer.cs", StringComparison.CurrentCultureIgnoreCase)); if (string.IsNullOrEmpty(returnValue.DesignerFileRelativePath)) { returnValue.DesignerFileRelativePath = csClass.FileRelativePathList[0]; returnValue.UserFileRelativePath = csClass.FileRelativePathList[0]; } else { returnValue.UserFileRelativePath = csClass.FileRelativePathList.FirstOrDefault(i => i != returnValue.DesignerFileRelativePath); } } foreach (var csProperty in csClass.PropertyList) { var targetField = TryLoadField(csProperty); if (targetField != null) { returnValue.TargetFieldList.Add(targetField); } } } return returnValue; }
public static TargetClassComparisonResult Compare(SourceWebPage webPage, TargetClass targetClass) { TargetClassComparisonResult comparison = new TargetClassComparisonResult(); foreach(var control in webPage.Controls) { var targetField = targetClass.TargetFieldList.FirstOrDefault(i=>i.SourceFieldName == control.FieldName && i.SourceClassFullName == control.ClassFullName); if(targetField == null) { targetField = new TargetField() { SourceFieldName = control.FieldName, SourceClassFullName = control.ClassFullName }; comparison.FieldsToAdd.Add(targetField); } } return comparison; }
public static TargetClassComparisonResult Compare(SourceWebPage webPage, TargetClass targetClass) { TargetClassComparisonResult comparison = new TargetClassComparisonResult(); foreach (var control in webPage.Controls) { var targetField = targetClass.TargetFieldList.FirstOrDefault(i => i.SourceFieldName == control.FieldName && i.SourceClassFullName == control.ClassFullName); if (targetField == null) { targetField = new TargetField() { SourceFieldName = control.FieldName, SourceClassFullName = control.ClassFullName }; comparison.FieldsToAdd.Add(targetField); } } return(comparison); }
public TargetClass UpdateClass(SourceWebPage sourceWebPage, TargetClass targetClass) { foreach (var sourceControl in sourceWebPage.Controls) { var targetField = targetClass.TargetFieldList.SingleOrDefault(i => i.SourceFieldName == sourceControl.FieldName); if (targetField == null) { targetField = new TargetField { IsDirty = true, SourceNamespaceName = sourceControl.NamespaceName, SourceClassName = sourceControl.ClassName, SourceFieldName = sourceControl.FieldName, TargetFieldName = sourceControl.FieldName }; EnumTargetControlType targetControlType; targetControlType = GetTargetControlType(sourceControl); targetField.TargetControlType = targetControlType; targetClass.TargetFieldList.Add(targetField); } else { if (targetField.SourceClassFullName != sourceControl.ClassFullName) { targetField.SourceClassName = sourceControl.ClassName; targetField.SourceNamespaceName = sourceControl.NamespaceName; targetField.IsDirty = true; } var targetControlType = GetTargetControlType(sourceControl); if (targetField.TargetControlType != targetControlType) { targetField.TargetControlType = targetControlType; targetField.IsDirty = true; } } } return(targetClass); }
//internal static TargetClass TryLoad(CSClass csClass) //{ // TargetClass returnValue = null; // var uiClientPageAttribute = csClass.AttributeList.SingleOrDefault(i => i.TypeName == typeof(UIClientPageAttribute).Name && i.TypeNamespace == typeof(UIClientPageAttribute).Namespace); // if(uiClientPageAttribute != null) // { // returnValue = new TargetClass // { // SourceClassFullName = Convert.ToString(uiClientPageAttribute.GetAttributeParameter(0, "SourceClassFullName", true)), // TargetClassFullName = csClass.ClassFullName // }; // //If there is only one field, that is the user and designer file. // //If there are two or more files and one ends with ".designer.cs", that is the designer file and the the first of the others is the user file // //If there are two or more files and none ends with ".designer.cs", then the first one is the designer and user file // if(csClass.FilePathList.Count == 1) // { // returnValue.DesignerFilePath = csClass.FilePathList[0]; // returnValue.UserFilePath = csClass.FilePathList[0]; // } // else if (csClass.FilePathList.Count > 1) // { // returnValue.DesignerFilePath = csClass.FilePathList.FirstOrDefault(i=>i.EndsWith(".designer.cs", StringComparison.CurrentCultureIgnoreCase)); // if(string.IsNullOrEmpty(returnValue.DesignerFilePath)) // { // returnValue.DesignerFilePath = csClass.FilePathList[0]; // returnValue.UserFilePath = csClass.FilePathList[0]; // } // else // { // returnValue.UserFilePath = csClass.FilePathList.FirstOrDefault(i=>i != returnValue.DesignerFilePath); // } // } // foreach(var csProperty in csClass.PropertyList) // { // var targetField = TargetField.TryLoad(csProperty); // if(targetField != null) // { // returnValue.TargetFieldList.Add(targetField); // } // } // } // return returnValue; //} public static TargetClass Create(TargetProject targetProject, SourceWebProject sourceProject, SourceWebPage sourcePage) { string sourceTypeName; string sourceTypeNamespace; DotNetParserHelper.SplitType(sourcePage.ClassFullName, out sourceTypeName, out sourceTypeNamespace); string relativeSourceNamespace; if(sourceTypeNamespace == sourceProject.RootNamespace) { relativeSourceNamespace = string.Empty; } else if(sourceTypeNamespace.StartsWith(sourceProject.RootNamespace)) { relativeSourceNamespace = sourceTypeNamespace.Substring(sourceProject.RootNamespace.Length + 1); } else { relativeSourceNamespace = sourceTypeNamespace; } string targetClassName = sourceTypeName + "PageClient"; string targetNamespace = targetProject.RootNamespace + ".Client.Pages." + relativeSourceNamespace; TargetClass returnValue = new TargetClass() { SourceClassFullName = sourcePage.ClassFullName, TargetClassFullName = targetNamespace + "." + targetClassName, DesignerFileRelativePath = Path.Combine(targetNamespace.Replace('.', '\\'), targetClassName + ".designer.cs"), UserFileRelativePath = Path.Combine(targetNamespace.Replace('.', '\\'), targetClassName + ".cs"), }; return returnValue; }
public void ExistingClassChangedTargetFieldType_ShouldUpdateTargetFieldType() { SourceWebPage sourceWebPage = new SourceWebPage { ClassFullName = "Test1.TestSourceClass", PageUrl = "TestSourceClass.aspx", Controls = new List<SourceWebControl>() { new SourceWebControl { ClassFullName = typeof(System.Web.UI.WebControls.HyperLink).FullName, FieldName = "TestTargetField" } } }; var targetClass = new TargetClass() { TargetFieldList = new List<TargetField>() { new TargetField { IsDirty = false, SourceClassFullName = typeof(System.Web.UI.WebControls.HyperLink).FullName, SourceFieldName = "TestTargetField", TargetControlType = EnumTargetControlType.TextBox, TargetFieldName = "TestTargetField" } } }; var targetModelGenerator = new TargetModelGenerator(); targetClass = targetModelGenerator.UpdateClass(sourceWebPage, targetClass); Assert.AreEqual(1, targetClass.TargetFieldList.Count); TestValidators.ValidateTargetField(targetClass.TargetFieldList[0], isDirty: true, sourceClassFullName: typeof(System.Web.UI.WebControls.HyperLink).FullName, sourceFieldName: "TestTargetField", targetControlType: EnumTargetControlType.Link, targetFieldName: "TestTargetField"); }
public void ExistingClassExistingIrrelevantFields() { SourceWebPage sourceWebPage = new SourceWebPage { ClassFullName = "Test1.TestSourceClass", PageUrl = "TestSourceClass.aspx", Controls = new List<SourceWebControl>() { new SourceWebControl { ClassFullName = "System.Web.UI.WebControls.HyperLink", FieldName = "NewTargetField" } } }; var targetClass = new TargetClass() { TargetFieldList = new List<TargetField>() { new TargetField { IsDirty = false, SourceClassFullName = "TestSourcenamespace.TestSourceClass", SourceFieldName = "ExistingTargetField", TargetControlType = EnumTargetControlType.Unknown, TargetFieldName = "ExistingTargetFieldName" } } }; var targetModelGenerator = new TargetModelGenerator(); targetClass = targetModelGenerator.UpdateClass(sourceWebPage, targetClass); Assert.AreEqual(2, targetClass.TargetFieldList.Count); TestValidators.ValidateTargetField(targetClass.TargetFieldList[0], isDirty:false, sourceClassFullName: "TestSourcenamespace.TestSourceClass", sourceFieldName: "ExistingTargetField", targetControlType: EnumTargetControlType.Unknown, targetFieldName: "ExistingTargetFieldName"); TestValidators.ValidateTargetField(targetClass.TargetFieldList[1], isDirty:true, sourceClassFullName: "System.Web.UI.WebControls.HyperLink", sourceFieldName: "NewTargetField", targetControlType: EnumTargetControlType.Link, targetFieldName: "NewTargetField"); }
public void NewTargetClassWithLabel_ShouldCreateNewTargetClassWithLabel() { SourceWebPage sourceWebPage = new SourceWebPage { ClassFullName = "Test1.TestSourceClass", PageUrl = "TestSourceClass.aspx", Controls = new List<SourceWebControl>() { new SourceWebControl { ClassFullName = "System.Web.UI.WebControls.Label", FieldName = "TestTargetField" } } }; TargetClass targetClass = new TargetClass(); var targetModelGenerator = new TargetModelGenerator(); targetClass = targetModelGenerator.UpdateClass(sourceWebPage, targetClass); Assert.AreEqual(1, targetClass.TargetFieldList.Count); TestValidators.ValidateTargetField(targetClass.TargetFieldList[0], isDirty:true, sourceClassFullName:"System.Web.UI.WebControls.Label", sourceFieldName:"TestTargetField", targetControlType: EnumTargetControlType.Label, targetFieldName:"TestTargetField"); }
public TargetClass UpdateClass(SourceWebPage sourceWebPage, TargetClass targetClass) { foreach(var sourceControl in sourceWebPage.Controls) { var targetField = targetClass.TargetFieldList.SingleOrDefault(i=>i.SourceFieldName == sourceControl.FieldName); if(targetField == null) { targetField = new TargetField { IsDirty = true, SourceNamespaceName = sourceControl.NamespaceName, SourceClassName = sourceControl.ClassName, SourceFieldName = sourceControl.FieldName, TargetFieldName = sourceControl.FieldName }; EnumTargetControlType targetControlType; targetControlType = GetTargetControlType(sourceControl); targetField.TargetControlType = targetControlType; targetClass.TargetFieldList.Add(targetField); } else { if(targetField.SourceClassFullName != sourceControl.ClassFullName) { targetField.SourceClassName = sourceControl.ClassName; targetField.SourceNamespaceName = sourceControl.NamespaceName; targetField.IsDirty = true; } var targetControlType = GetTargetControlType(sourceControl); if(targetField.TargetControlType != targetControlType) { targetField.TargetControlType = targetControlType; targetField.IsDirty = true; } } } return targetClass; }
//public TargetProject UpdateProject(TargetProject targetProject, SourceWebProject sourceProject) //{ // //List<TargetClass> classesToAddToProject = new List<TargetClass>(); // //foreach (var masterPage in sourceProject.MasterPageList) // //{ // // //Find existing object // // var targetClass = targetProject.TargetClassList.SingleOrDefault(i => i.SourceClassFullName == masterPage.ClassFullName); // // if (targetClass == null) // // { // // //If does not exist, create it // // targetClass = TargetClass.Create(targetProject, sourceProject, masterPage); // // classesToAddToProject.Add(targetClass); // // } // // targetClass.ExpectedUrl = masterPage.PageUrl; // // targetClass.TargetObjectType = EnumTargetObjectType.MasterPage; // // //For each missing field, add it // // var comparison = TargetClassComparisonResult.Compare(masterPage, targetClass); // // targetClass.EnsureFiles(targetProjectPath); // // targetClass.AddFieldsToFile(targetProjectPath, targetClass.DesignerFilePath, comparison.FieldsToAdd); // //} // foreach (var sourcePage in sourceProject.WebPageList) // { // var targetClass = targetProject.TargetClassList.FirstOrDefault(i=>i.SourceClassFullName == sourcePage.ClassFullName); // if(targetClass == null) // { // string relativeSourceNamespace; // if(sourcePage.NamespaceName == sourceProject.RootNamespace) // { // relativeSourceNamespace = string.Empty; // } // else if(sourcePage.NamespaceName.StartsWith(sourceProject.RootNamespace)) // { // relativeSourceNamespace = sourcePage.NamespaceName.Substring(sourceProject.RootNamespace.Length + 1); // } // else // { // relativeSourceNamespace = sourcePage.NamespaceName; // } // string targetClassName = sourcePage.ClassName + "PageClient"; // string targetDirectory = @"Client\Pages\" + relativeSourceNamespace.Replace(".","\\");; // string targetNamespace = targetProject.RootNamespace + ".Client.Pages." + relativeSourceNamespace; // targetClass = new TargetClass // { // SourceClassFullName = sourcePage.ClassFullName, // TargetClassFullName = targetNamespace + "." + targetClassName, // DesignerFilePath = Path.Combine(targetDirectory, targetClassName + ".designer.cs"), // UserFilePath = Path.Combine(targetDirectory, targetClassName + ".cs"), // TargetObjectType = EnumTargetObjectType.WebPage, // ExpectedUrl = sourcePage.PageUrl // }; // targetProject.TargetClassList.Add(targetClass); // } // } // return targetProject; //} public TargetClassComparisonResult CompareClass(SourceWebProject sourceProject, SourceWebPage sourceClass, TargetProject targetProject, TargetClass targetClass) { TargetClassComparisonResult result; if(targetClass == null) { string relativeSourceNamespace; if (sourceClass.NamespaceName == sourceProject.RootNamespace) { relativeSourceNamespace = string.Empty; } else if (sourceClass.NamespaceName.StartsWith(sourceProject.RootNamespace)) { relativeSourceNamespace = sourceClass.NamespaceName.Substring(sourceProject.RootNamespace.Length + 1); } else { relativeSourceNamespace = sourceClass.NamespaceName; } string targetClassName = sourceClass.ClassName + "PageClient"; string targetDirectory = @"Client\Pages"; string targetNamespace = targetProject.RootNamespace + ".Client.Pages"; if(!string.IsNullOrEmpty(relativeSourceNamespace)) { targetDirectory += "\\" + relativeSourceNamespace.Replace(".", "\\"); targetNamespace += "." + relativeSourceNamespace; } result = new TargetClassComparisonResult { SourceClassFullName = sourceClass.ClassFullName, TargetClassName = targetClassName, TargetNamespaceName = targetNamespace, DesignerFileRelativePath = Path.Combine(targetDirectory, targetClassName + ".designer.cs"), UserFileRelativePath = Path.Combine(targetDirectory, targetClassName + ".cs"), SourceObjectType = EnumSourceObjectType.WebPage, ExpectedUrl = sourceClass.PageUrl, IsDirty = true }; } else { result = new TargetClassComparisonResult { SourceClassFullName = targetClass.SourceClassFullName, TargetClassFullName = targetClass.TargetClassFullName, DesignerFileRelativePath = targetClass.DesignerFileRelativePath, UserFileRelativePath = targetClass.UserFileRelativePath, SourceObjectType = targetClass.SourceObjectType, ExpectedUrl = targetClass.ExpectedUrl }; if(targetClass.ExpectedUrl != sourceClass.PageUrl) { result.ExpectedUrl = sourceClass.PageUrl; result.IsDirty = true; } if(targetClass.SourceObjectType != sourceClass.SourceObjectType) { result.SourceObjectType = sourceClass.SourceObjectType; result.IsDirty = true; } } foreach(var sourceControl in sourceClass.Controls) { TargetField targetControl = null; if(targetClass != null) { targetControl = targetClass.TargetFieldList.SingleOrDefault(i => i.SourceFieldName == sourceControl.FieldName); } if(targetControl == null) { targetControl = new TargetField { SourceClassFullName = sourceControl.ClassFullName, SourceFieldName = sourceControl.FieldName, TargetControlType = this.TargetClassManager.GetTargetControlType(sourceControl.ClassFullName), IsDirty = true, TargetFieldName = sourceControl.FieldName }; result.FieldsToAdd.Add(targetControl); result.IsDirty = true; } else if(targetControl.SourceClassFullName != sourceControl.ClassFullName) { targetControl.SourceClassFullName = sourceControl.ClassFullName; result.FieldsToUpdate.Add(targetControl); targetControl.IsDirty = true; result.IsDirty = true; } } return result; }
//public TargetProject UpdateProject(TargetProject targetProject, SourceWebProject sourceProject) //{ // //List<TargetClass> classesToAddToProject = new List<TargetClass>(); // //foreach (var masterPage in sourceProject.MasterPageList) // //{ // // //Find existing object // // var targetClass = targetProject.TargetClassList.SingleOrDefault(i => i.SourceClassFullName == masterPage.ClassFullName); // // if (targetClass == null) // // { // // //If does not exist, create it // // targetClass = TargetClass.Create(targetProject, sourceProject, masterPage); // // classesToAddToProject.Add(targetClass); // // } // // targetClass.ExpectedUrl = masterPage.PageUrl; // // targetClass.TargetObjectType = EnumTargetObjectType.MasterPage; // // //For each missing field, add it // // var comparison = TargetClassComparisonResult.Compare(masterPage, targetClass); // // targetClass.EnsureFiles(targetProjectPath); // // targetClass.AddFieldsToFile(targetProjectPath, targetClass.DesignerFilePath, comparison.FieldsToAdd); // //} // foreach (var sourcePage in sourceProject.WebPageList) // { // var targetClass = targetProject.TargetClassList.FirstOrDefault(i=>i.SourceClassFullName == sourcePage.ClassFullName); // if(targetClass == null) // { // string relativeSourceNamespace; // if(sourcePage.NamespaceName == sourceProject.RootNamespace) // { // relativeSourceNamespace = string.Empty; // } // else if(sourcePage.NamespaceName.StartsWith(sourceProject.RootNamespace)) // { // relativeSourceNamespace = sourcePage.NamespaceName.Substring(sourceProject.RootNamespace.Length + 1); // } // else // { // relativeSourceNamespace = sourcePage.NamespaceName; // } // string targetClassName = sourcePage.ClassName + "PageClient"; // string targetDirectory = @"Client\Pages\" + relativeSourceNamespace.Replace(".","\\");; // string targetNamespace = targetProject.RootNamespace + ".Client.Pages." + relativeSourceNamespace; // targetClass = new TargetClass // { // SourceClassFullName = sourcePage.ClassFullName, // TargetClassFullName = targetNamespace + "." + targetClassName, // DesignerFilePath = Path.Combine(targetDirectory, targetClassName + ".designer.cs"), // UserFilePath = Path.Combine(targetDirectory, targetClassName + ".cs"), // TargetObjectType = EnumTargetObjectType.WebPage, // ExpectedUrl = sourcePage.PageUrl // }; // targetProject.TargetClassList.Add(targetClass); // } // } // return targetProject; //} public TargetClassComparisonResult CompareClass(SourceWebProject sourceProject, SourceWebPage sourceClass, TargetProject targetProject, TargetClass targetClass) { TargetClassComparisonResult result; if (targetClass == null) { string relativeSourceNamespace; if (sourceClass.NamespaceName == sourceProject.RootNamespace) { relativeSourceNamespace = string.Empty; } else if (sourceClass.NamespaceName.StartsWith(sourceProject.RootNamespace)) { relativeSourceNamespace = sourceClass.NamespaceName.Substring(sourceProject.RootNamespace.Length + 1); } else { relativeSourceNamespace = sourceClass.NamespaceName; } string targetClassName = sourceClass.ClassName + "PageClient"; string targetDirectory = @"Client\Pages"; string targetNamespace = targetProject.RootNamespace + ".Client.Pages"; if (!string.IsNullOrEmpty(relativeSourceNamespace)) { targetDirectory += "\\" + relativeSourceNamespace.Replace(".", "\\"); targetNamespace += "." + relativeSourceNamespace; } result = new TargetClassComparisonResult { SourceClassFullName = sourceClass.ClassFullName, TargetClassName = targetClassName, TargetNamespaceName = targetNamespace, DesignerFileRelativePath = Path.Combine(targetDirectory, targetClassName + ".designer.cs"), UserFileRelativePath = Path.Combine(targetDirectory, targetClassName + ".cs"), SourceObjectType = EnumSourceObjectType.WebPage, ExpectedUrl = sourceClass.PageUrl, IsDirty = true }; } else { result = new TargetClassComparisonResult { SourceClassFullName = targetClass.SourceClassFullName, TargetClassFullName = targetClass.TargetClassFullName, DesignerFileRelativePath = targetClass.DesignerFileRelativePath, UserFileRelativePath = targetClass.UserFileRelativePath, SourceObjectType = targetClass.SourceObjectType, ExpectedUrl = targetClass.ExpectedUrl }; if (targetClass.ExpectedUrl != sourceClass.PageUrl) { result.ExpectedUrl = sourceClass.PageUrl; result.IsDirty = true; } if (targetClass.SourceObjectType != sourceClass.SourceObjectType) { result.SourceObjectType = sourceClass.SourceObjectType; result.IsDirty = true; } } foreach (var sourceControl in sourceClass.Controls) { TargetField targetControl = null; if (targetClass != null) { targetControl = targetClass.TargetFieldList.SingleOrDefault(i => i.SourceFieldName == sourceControl.FieldName); } if (targetControl == null) { targetControl = new TargetField { SourceClassFullName = sourceControl.ClassFullName, SourceFieldName = sourceControl.FieldName, TargetControlType = this.TargetClassManager.GetTargetControlType(sourceControl.ClassFullName), IsDirty = true, TargetFieldName = sourceControl.FieldName }; result.FieldsToAdd.Add(targetControl); result.IsDirty = true; } else if (targetControl.SourceClassFullName != sourceControl.ClassFullName) { targetControl.SourceClassFullName = sourceControl.ClassFullName; result.FieldsToUpdate.Add(targetControl); targetControl.IsDirty = true; result.IsDirty = true; } } return(result); }