Skip to content

Commit 45d732d

Browse files
authored
Merge pull request #116390 from vanillajonathan/patch-1
Use file-scoped namespaces
2 parents 8ba62ff + 5933237 commit 45d732d

File tree

1 file changed

+55
-59
lines changed

1 file changed

+55
-59
lines changed

articles/azure-functions/functions-dotnet-dependency-injection.md

Lines changed: 55 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -48,20 +48,19 @@ using Microsoft.Extensions.DependencyInjection;
4848

4949
[assembly: FunctionsStartup(typeof(MyNamespace.Startup))]
5050

51-
namespace MyNamespace
51+
namespace MyNamespace;
52+
53+
public class Startup : FunctionsStartup
5254
{
53-
public class Startup : FunctionsStartup
55+
public override void Configure(IFunctionsHostBuilder builder)
5456
{
55-
public override void Configure(IFunctionsHostBuilder builder)
56-
{
57-
builder.Services.AddHttpClient();
57+
builder.Services.AddHttpClient();
5858

59-
builder.Services.AddSingleton<IMyService>((s) => {
60-
return new MyService();
61-
});
59+
builder.Services.AddSingleton<IMyService>((s) => {
60+
return new MyService();
61+
});
6262

63-
builder.Services.AddSingleton<ILoggerProvider, MyLoggerProvider>();
64-
}
63+
builder.Services.AddSingleton<ILoggerProvider, MyLoggerProvider>();
6564
}
6665
}
6766
```
@@ -91,29 +90,28 @@ using Microsoft.Extensions.Logging;
9190
using System.Net.Http;
9291
using System.Threading.Tasks;
9392

94-
namespace MyNamespace
93+
namespace MyNamespace;
94+
95+
public class MyHttpTrigger
9596
{
96-
public class MyHttpTrigger
97-
{
98-
private readonly HttpClient _client;
99-
private readonly IMyService _service;
97+
private readonly HttpClient _client;
98+
private readonly IMyService _service;
10099

101-
public MyHttpTrigger(IHttpClientFactory httpClientFactory, IMyService service)
102-
{
103-
this._client = httpClientFactory.CreateClient();
104-
this._service = service;
105-
}
100+
public MyHttpTrigger(IHttpClientFactory httpClientFactory, IMyService service)
101+
{
102+
this._client = httpClientFactory.CreateClient();
103+
this._service = service;
104+
}
106105

107-
[FunctionName("MyHttpTrigger")]
108-
public async Task<IActionResult> Run(
109-
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
110-
ILogger log)
111-
{
112-
var response = await _client.GetAsync("https://microsoft.com");
113-
var message = _service.GetMessage();
106+
[FunctionName("MyHttpTrigger")]
107+
public async Task<IActionResult> Run(
108+
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
109+
ILogger log)
110+
{
111+
var response = await _client.GetAsync("https://microsoft.com");
112+
var message = _service.GetMessage();
114113

115-
return new OkObjectResult("Response from function with injected dependencies.");
116-
}
114+
return new OkObjectResult("Response from function with injected dependencies.");
117115
}
118116
}
119117
```
@@ -147,25 +145,24 @@ The host injects `ILogger<T>` and `ILoggerFactory` services into constructors.
147145
The following example demonstrates how to add an `ILogger<HttpTrigger>` with logs that are exposed to the host.
148146

149147
```csharp
150-
namespace MyNamespace
148+
namespace MyNamespace;
149+
150+
public class HttpTrigger
151151
{
152-
public class HttpTrigger
153-
{
154-
private readonly ILogger<HttpTrigger> _log;
152+
private readonly ILogger<HttpTrigger> _log;
155153

156-
public HttpTrigger(ILogger<HttpTrigger> log)
157-
{
158-
_log = log;
159-
}
154+
public HttpTrigger(ILogger<HttpTrigger> log)
155+
{
156+
_log = log;
157+
}
160158

161-
[FunctionName("HttpTrigger")]
162-
public async Task<IActionResult> Run(
163-
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req)
164-
{
165-
_log.LogInformation("C# HTTP trigger function processed a request.");
159+
[FunctionName("HttpTrigger")]
160+
public async Task<IActionResult> Run(
161+
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req)
162+
{
163+
_log.LogInformation("C# HTTP trigger function processed a request.");
166164

167-
// ...
168-
}
165+
// ...
169166
}
170167
```
171168

@@ -293,23 +290,22 @@ using Microsoft.Extensions.DependencyInjection;
293290

294291
[assembly: FunctionsStartup(typeof(MyNamespace.Startup))]
295292

296-
namespace MyNamespace
293+
namespace MyNamespace;
294+
295+
public class Startup : FunctionsStartup
297296
{
298-
public class Startup : FunctionsStartup
297+
public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder)
298+
{
299+
FunctionsHostBuilderContext context = builder.GetContext();
300+
301+
builder.ConfigurationBuilder
302+
.AddJsonFile(Path.Combine(context.ApplicationRootPath, "appsettings.json"), optional: true, reloadOnChange: false)
303+
.AddJsonFile(Path.Combine(context.ApplicationRootPath, $"appsettings.{context.EnvironmentName}.json"), optional: true, reloadOnChange: false)
304+
.AddEnvironmentVariables();
305+
}
306+
307+
public override void Configure(IFunctionsHostBuilder builder)
299308
{
300-
public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder)
301-
{
302-
FunctionsHostBuilderContext context = builder.GetContext();
303-
304-
builder.ConfigurationBuilder
305-
.AddJsonFile(Path.Combine(context.ApplicationRootPath, "appsettings.json"), optional: true, reloadOnChange: false)
306-
.AddJsonFile(Path.Combine(context.ApplicationRootPath, $"appsettings.{context.EnvironmentName}.json"), optional: true, reloadOnChange: false)
307-
.AddEnvironmentVariables();
308-
}
309-
310-
public override void Configure(IFunctionsHostBuilder builder)
311-
{
312-
}
313309
}
314310
}
315311
```

0 commit comments

Comments
 (0)