Skip to content

Commit c29b8ad

Browse files
authored
docs: Improve README (#45)
* fix(ExampleProject): Make properties nullable. * docs(README): Make everything optional section.
1 parent 64445e1 commit c29b8ad

File tree

2 files changed

+57
-5
lines changed

2 files changed

+57
-5
lines changed

README.md

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -516,6 +516,58 @@ university.AddStudent(s => s.Named("Alice", "King").OfAge(22)...);
516516
```
517517

518518
Note that if you want to set a member of a Fluent API class, you can simply use `FluentMember` or `FluentCollection` instead of the pattern above.
519+
520+
521+
### Make everything optional
522+
523+
There are two ways to make all fields, properties, and methods optional in your fluent API. If the initialization order matters for your use case, use the following approach:
524+
525+
```cs
526+
[FluentApi]
527+
public class Student
528+
{
529+
[FluentMember(0)]
530+
[FluentSkippable]
531+
public string? FirstName { get; private set; }
532+
533+
[FluentMember(1)]
534+
[FluentSkippable]
535+
public string? LastName { get; private set; }
536+
537+
[FluentMember(2)]
538+
[FluentSkippable]
539+
public int? Age { get; private set; }
540+
541+
[FluentMethod(3)]
542+
public void Build()
543+
{
544+
}
545+
}
546+
```
547+
548+
If the initialization order does not matter, you can simplify the configuration as follows:
549+
550+
```cs
551+
public class Student
552+
{
553+
[FluentMember(0)]
554+
[FluentContinueWith(0)]
555+
public string? FirstName { get; private set; }
556+
557+
[FluentMember(0)]
558+
[FluentContinueWith(0)]
559+
public string? LastName { get; private set; }
560+
561+
[FluentMember(0)]
562+
[FluentContinueWith(0)]
563+
public int? Age { get; private set; }
564+
565+
[FluentMethod(0)]
566+
public void Build()
567+
{
568+
}
569+
}
570+
```
519571

520572

521573
## Problems with the IDE

src/ExampleProject/OrderArbitrarySteps.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,23 +35,23 @@ public class Address2
3535
{
3636
[FluentMember(0, "{Name}")]
3737
[FluentContinueWith(0)]
38-
public string Street { get; private set; }
38+
public string? Street { get; private set; }
3939

4040
[FluentMember(0, "{Name}")]
4141
[FluentContinueWith(0)]
42-
public string City { get; private set; }
42+
public string? City { get; private set; }
4343

4444
[FluentMember(0, "{Name}")]
4545
[FluentContinueWith(0)]
46-
public string Zip { get; private set; }
46+
public string? Zip { get; private set; }
4747

4848
[FluentMember(0, "{Name}")]
4949
[FluentContinueWith(0)]
50-
public string State { get; private set; }
50+
public string? State { get; private set; }
5151

5252
[FluentMember(0, "{Name}")]
5353
[FluentContinueWith(0)]
54-
public string Country { get; private set; }
54+
public string? Country { get; private set; }
5555

5656
[FluentMethod(0)]
5757
private void Build()

0 commit comments

Comments
 (0)