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;
/// <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 ()
{
}
@ -134,26 +119,32 @@ namespace cscz
constructorSignature.AppendFormat("{0} in{1}, ", datatypeName, publicDataMemberName);
if (CreateProperties)
switch(GenerationMode)
{
// Private data member
classCode.WriteLine("\tprivate {0} {1};", datatypeName, privateDataMemberName);
case GenerationMode.PrivateVariablesWithProperties:
// 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}");
// 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);
}
else
{
// Constuctor body
classCode.WriteLine("\tpublic {0} {1};", datatypeName, publicDataMemberName);
constructorBody.WriteLine("\t\t{0} = in{0};", publicDataMemberName);
// Constructor body
constructorBody.WriteLine("\t\t{0} = in{0};", publicDataMemberName);
break;
case GenerationMode.PublicAutoProperties:
properties.WriteLine("\tpublic {0} {1} {{ get; set; }}", datatypeName, publicDataMemberName);
constructorBody.WriteLine("\t\t{0} = in{0};", publicDataMemberName);
break;
case GenerationMode.PublicVariables:
// Constuctor body
classCode.WriteLine("\tpublic {0} {1};", datatypeName, publicDataMemberName);
constructorBody.WriteLine("\t\t{0} = in{0};", publicDataMemberName);
break;
}
}

View file

@ -7,10 +7,11 @@ Usage:
Options:
Argument Meaning
Argument Meaning
-------------------------------------------------------------------------------
--public Causes the parameters of the class to be defined as public data members. This is the default.
--private Causes the parameters of the class to be defined as private data members with public accessors.
--public Generates public data members for the class fields. This is the default.
--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.