Browse Source

fix #438 - WinForms Designer modifies class fields outside designer file

pull/478/head
Siegfried Pammer 12 years ago
parent
commit
16eb9ddae2
  1. 28
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormsDesigner/CSharpDesignerLoader.cs

28
src/AddIns/BackendBindings/CSharpBinding/Project/Src/FormsDesigner/CSharpDesignerLoader.cs

@ -127,6 +127,7 @@ namespace CSharpBinding.FormsDesigner
foreach (var field in designerClass.Fields) { foreach (var field in designerClass.Fields) {
var codeField = new CodeMemberField(cv.Convert(field.Type), field.Name); var codeField = new CodeMemberField(cv.Convert(field.Type), field.Name);
codeField.Attributes = GetAccessibility(field);
codeClass.Members.Add(codeField); codeClass.Members.Add(codeField);
} }
var codeNamespace = new CodeNamespace(designerClass.Namespace); var codeNamespace = new CodeNamespace(designerClass.Namespace);
@ -171,6 +172,33 @@ namespace CSharpBinding.FormsDesigner
} }
} }
MemberAttributes GetAccessibility(IField field)
{
switch (field.Accessibility) {
case Accessibility.None:
case Accessibility.Private:
return MemberAttributes.Private;
break;
case Accessibility.Public:
return MemberAttributes.Public;
break;
case Accessibility.Protected:
return MemberAttributes.Family;
break;
case Accessibility.Internal:
return MemberAttributes.Assembly;
break;
case Accessibility.ProtectedOrInternal:
return MemberAttributes.FamilyOrAssembly;
break;
case Accessibility.ProtectedAndInternal:
return MemberAttributes.FamilyAndAssembly;
break;
default:
throw new ArgumentOutOfRangeException();
}
}
protected override CodeDomLocalizationModel GetCurrentLocalizationModelFromDesignedFile() protected override CodeDomLocalizationModel GetCurrentLocalizationModelFromDesignedFile()
{ {
SD.Log.Debug("CSharpDesignerLoader.GetCurrentLocalizationModelFromDesignedFile()"); SD.Log.Debug("CSharpDesignerLoader.GetCurrentLocalizationModelFromDesignedFile()");

Loading…
Cancel
Save