protected void Add_Constructor(Col1 col) { var target = Target; var code = new CsCodeWriter(); var m = target.AddConstructor("creates instance of " + target.Name); var c = col.Writer1.Code; if (!string.IsNullOrEmpty(c)) { code.WriteLine(c); } foreach (var i in col.Items) { var flags = i.CheckingFlags; code.CheckArgument(i.ArgName, flags.ConvertToArgChecking(), Target); var p = m.AddParam(i.PropertyName.FirstLower(), i.PropertyType, i.Description); if ((flags & Flags1.Optional) != 0) { p.ConstValue = "null"; } /*if ((flags & Flags1.TrimValue) != 0) * { * code.WriteLine("{0} = {0}?.Trim();", i.ArgName); * flags &= ~Flags1.TrimValue; * * if ((flags & Flags1.NotWhitespace) != 0) * { * flags &= ~Flags1.NotWhitespace; * flags |= Flags1.NotEmpty; * } * }*/ /*if ((flags & Flags1.NotNull) != 0) * { * flags &= ~Flags1.NotNull; * p.Attributes.Add(CsAttribute.Make<NotNullAttribute>(target)); * var throwCode = new Args($"nameof({i.ArgName})") * .Throw<NullReferenceException>(target); * code.SingleLineIf($"{i.ArgName} is null", throwCode); * }*/ /*if ((flags & Flags1.NotWhitespace) != 0) * { * flags &= ~(Flags1.NotEmpty | Flags1.NotWhitespace); * // var m = nameof(string.IsNullOrWhiteSpace); * var throwCode = new Args($"nameof({i.ArgName})") * .Throw<ArgumentException>(target); * code.SingleLineIf($"string.IsNullOrWhiteSpace({i.ArgName})", throwCode); * * flags &= ~(Flags1.NotNullOrWhitespace | Flags1.NotNullOrEmpty); * } * * if ((flags & Flags1.NotEmpty) != 0) * { * flags &= ~Flags1.NotEmpty; * //var m = nameof(string.IsNullOrEmpty); * var throwCode = new Args($"nameof({i.ArgName})") * .Throw<ArgumentException>(target); * code.SingleLineIf($"string.IsNullOrEmpty({i.ArgName})", throwCode); * * flags &= ~(Flags1.NotNullOrWhitespace | Flags1.NotNullOrEmpty); * }*/ if ((flags & Flags1.DoNotAssignProperty) == 0) { code.WriteAssign(i.PropertyName, i.Expression); } } c = col.Writer2.Code; if (!string.IsNullOrEmpty(c)) { code.WriteLine(c); } m.WithBody(code); }