Всем привет,
В номом шарпе появились
инструкции верхнего уровня
Вместо такой записи
using System;
namespace HelloWorld
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}
Теперь пишется так:
using System;
Console.WriteLine("Hello World!");
Мне нужно в новом синтаксисе проставить модификатор доступа public, но я не нахожу этого нигде в документации и в гугле. Помогите, пожалуйста.
Это нужно затем, что я делаю интеграционные тесты и определяю точку запуска через WebApplicationFactory
internal class FunctionalTestsApiApplication : WebApplicationFactory<Program>
{
protected override IHost CreateHost(IHostBuilder builder)
{
...
Затем я могу использовать эту фабрику внутри тестовых методов вот так:
[Fact]
public async Task Login()
{
// Arrange
await using var application = new FunctionalTestsApiApplication();
var client = application.CreateClient();
...
Но мне необходимо пробросить фабрику через контейнер DI, например, через конструктор, я делаю по инструкции вот так:
public class Auth: IClassFixture<WebApplicationFactory<Program>>
{
private readonly WebApplicationFactory<Program> _factory;
private readonly IUserArrangeService _userService;
public Auth(WebApplicationFactory<Program> factory, IUserArrangeService userService)
{
_factory = factory;
_userService = userService;
}
Но в конструкторе слово Program подчеркивается разумеется из-за того, что у этого класса less accesibility, чем у конструктора. А конструктор должен быть public чтобы DI работал