Implement public auto properties & update Help.md.

This commit is contained in:
Starbeamrainbowlabs 2016-10-18 21:30:47 +01:00
parent 4593ebfcac
commit 4c68613913
2 changed files with 28 additions and 36 deletions

View File

@ -48,21 +48,6 @@ namespace cscz
public GenerationMode GenerationMode = GenerationMode.PublicVariables; public GenerationMode GenerationMode = GenerationMode.PublicVariables;
/// <summary>
/// Whether to make data members private and create public properties for them instead of making the
/// data members public.
/// This is read only. Please refer to GenerationMode in order to change this field.
/// </summary>
public bool CreateProperties
{
get
{
if (GenerationMode == GenerationMode.PrivateVariablesWithProperties)
return true;
return false;
}
}
public ClassGenerator () public ClassGenerator ()
{ {
} }
@ -134,26 +119,32 @@ namespace cscz
constructorSignature.AppendFormat("{0} in{1}, ", datatypeName, publicDataMemberName); constructorSignature.AppendFormat("{0} in{1}, ", datatypeName, publicDataMemberName);
if (CreateProperties) switch(GenerationMode)
{ {
// Private data member case GenerationMode.PrivateVariablesWithProperties:
classCode.WriteLine("\tprivate {0} {1};", datatypeName, privateDataMemberName); // Private data member
classCode.WriteLine("\tprivate {0} {1};", datatypeName, privateDataMemberName);
// Public property associated with above private data member
properties.WriteLine("\tpublic {0} {1}", datatypeName, publicDataMemberName);
properties.WriteLine("\t{");
properties.WriteLine("\t\tget {{ return {0}; }}", privateDataMemberName);
properties.WriteLine("\t\tset {{ {0} = value; }}", privateDataMemberName);
properties.WriteLine("\t}");
// Constructor body
constructorBody.WriteLine("\t\t{0} = in{0};", publicDataMemberName);
break;
case GenerationMode.PublicAutoProperties:
properties.WriteLine("\tpublic {0} {1} {{ get; set; }}", datatypeName, publicDataMemberName);
// Public property associated with above private data member constructorBody.WriteLine("\t\t{0} = in{0};", publicDataMemberName);
properties.WriteLine("\tpublic {0} {1}", datatypeName, publicDataMemberName); break;
properties.WriteLine("\t{"); case GenerationMode.PublicVariables:
properties.WriteLine("\t\tget {{ return {0}; }}", privateDataMemberName); // Constuctor body
properties.WriteLine("\t\tset {{ {0} = value; }}", privateDataMemberName); classCode.WriteLine("\tpublic {0} {1};", datatypeName, publicDataMemberName);
properties.WriteLine("\t}"); constructorBody.WriteLine("\t\t{0} = in{0};", publicDataMemberName);
break;
// Constructor body
constructorBody.WriteLine("\t\t{0} = in{0};", publicDataMemberName);
}
else
{
// Constuctor body
classCode.WriteLine("\tpublic {0} {1};", datatypeName, publicDataMemberName);
constructorBody.WriteLine("\t\t{0} = in{0};", publicDataMemberName);
} }
} }

View File

@ -7,10 +7,11 @@ Usage:
Options: Options:
Argument Meaning Argument Meaning
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
--public Causes the parameters of the class to be defined as public data members. This is the default. --public Generates public data members for the class fields. This is the default.
--private Causes the parameters of the class to be defined as private data members with public accessors. --private Generates private data members with public accessors for the class fields.
--public-auto Generates public auto properties for the class fields.
Note that arguments specified later always override arguments specified earlier. Note that arguments specified later always override arguments specified earlier.