Excuse me while I react to everyone suggesting the builder pattern here:
This is C#, not Java!
A main reason for Joshua Bloch's builder pattern is to hack around Java's lack of named arguments. This gives Java a way around the evil telescoping constructor pattern.
You're in C#. You have named arguments!
Another reason for Joshua Bloch's builder pattern is to separate required arguments from optional arguments (those that have a good default value) and allow any combination of optional arguments to be set. This is needed because Java doesn't natively support optional arguments.
You're in C#. You have optional arguments!
That means the 3 constructors you've listed should be replaced with just 1:
string TriggerSQL = "some default string",
string When = "some other default string"
And now, unlike before, clients can change
When without fiddling with
StartType: new TriggerStartType(),
EventType: new TriggerEventType(),
Compared to the Bloch builder this is
- Easier for clients (humans) to use
- Easier to implement
- A flexible design
Don't get me wrong, I love the Bloch builder. In Java. Don't use hacky workarounds in languages that don't need them.
Now you asked about good style and you mentioned adding more parameters. Be careful of adding to many. This is called arity. Too much arity is a code smell that may indicate a flaw in your underlying design. There are ways to redesign to reduce airity.
If those additional parameters are more complicated than the simple required vs. optional (with a good known default) pattern then you might be interested in the next step beyond the Bloch builder. The DSL builder.