@@ -65,6 +65,118 @@ public async Task<IActionResult> GetOrder(int id)
6565 AnalyzerAssert . Valid ( Analyzer , order , db , code ) ;
6666 }
6767
68+ [ Test ]
69+ public void ImplicitOptionalFromRoute ( )
70+ {
71+ var order = @"
72+ namespace ValidCode
73+ {
74+ public class Order
75+ {
76+ public int Id { get; set; }
77+ }
78+ }" ;
79+
80+ var db = @"
81+ namespace ValidCode
82+ {
83+ using Microsoft.EntityFrameworkCore;
84+
85+ public class Db : DbContext
86+ {
87+ public DbSet<Order> Orders { get; set; }
88+ }
89+ }" ;
90+ var code = @"
91+ namespace ValidCode
92+ {
93+ using System.Threading.Tasks;
94+ using Microsoft.AspNetCore.Mvc;
95+ using Microsoft.EntityFrameworkCore;
96+
97+ [ApiController]
98+ public class OrdersController : Controller
99+ {
100+ private readonly Db db;
101+
102+ public OrdersController(Db db)
103+ {
104+ this.db = db;
105+ }
106+
107+ [HttpGet(""api/orders/{id?}"")]
108+ public async Task<IActionResult> GetOrder(int? id)
109+ {
110+ var match = id == null
111+ ? await this.db.Orders.FirstOrDefaultAsync()
112+ : await this.db.Orders.FirstOrDefaultAsync(x => x.Id == id);
113+ if (match == null)
114+ {
115+ return this.NotFound();
116+ }
117+
118+ return this.Ok(match);
119+ }
120+ }
121+ }" ;
122+ AnalyzerAssert . Valid ( Analyzer , order , db , code ) ;
123+ }
124+
125+ [ Test ]
126+ public void ImplicitTypedFromRoute ( )
127+ {
128+ var order = @"
129+ namespace ValidCode
130+ {
131+ public class Order
132+ {
133+ public int Id { get; set; }
134+ }
135+ }" ;
136+
137+ var db = @"
138+ namespace ValidCode
139+ {
140+ using Microsoft.EntityFrameworkCore;
141+
142+ public class Db : DbContext
143+ {
144+ public DbSet<Order> Orders { get; set; }
145+ }
146+ }" ;
147+ var code = @"
148+ namespace ValidCode
149+ {
150+ using System.Threading.Tasks;
151+ using Microsoft.AspNetCore.Mvc;
152+ using Microsoft.EntityFrameworkCore;
153+
154+ [ApiController]
155+ public class OrdersController : Controller
156+ {
157+ private readonly Db db;
158+
159+ public OrdersController(Db db)
160+ {
161+ this.db = db;
162+ }
163+
164+ [HttpGet(""api/orders/{id:int}"")]
165+ public async Task<IActionResult> GetOrder(int id)
166+ {
167+ var match = await this.db.Orders.FirstOrDefaultAsync(x => x.Id == id);
168+ if (match == null)
169+ {
170+ return this.NotFound();
171+ }
172+
173+ return this.Ok(match);
174+ }
175+ }
176+ }" ;
177+ AnalyzerAssert . Valid ( Analyzer , order , db , code ) ;
178+ }
179+
68180 [ Test ]
69181 public void ExplicitFromRoute ( )
70182 {
0 commit comments