Ответы пользователя по тегу C#
  • Почему моделька пустая у экшн контроллера?

    @lucky4 Автор вопроса
    Разобрался. Я не прокинул для модельки [FromBody] :)
    Ответ написан
    Комментировать
  • Как написать условие для такого случая?

    @lucky4 Автор вопроса
    string GetCorrected(string input)
    {
        if (string.IsNullOrEmpty(input)) return input;
        int last = input.LastIndexOf(" ");
        if (last > -1 && last < input.Length-1) return input;
        else return input + " ";
    }
    Ответ написан
    Комментировать
  • Как настроить docker?

    @lucky4 Автор вопроса
    Я вот таким вот вариантом сделал. Была проблема с копированием, но я файл docker-compose перенес туда же где и Dockerfile

    FROM mcr.microsoft.com/dotnet/sdk:5.0 AS build
    WORKDIR /src
    
    COPY ["ShoppingCart.API/ShoppingCart.API.csproj", "ShoppingCart.API/"]
    COPY ["ShoppingCart.Domain.Entities/ShoppingCart.Domain.Entities.csproj", "ShoppingCart.Domain.Entities/"]
    COPY ["ShoppingCart.Domain.Interfaces/ShoppingCart.Domain.Interfaces.csproj", "ShoppingCart.Domain.Interfaces/"]
    COPY ["ShoppingCart.Infrastructure.Data/ShoppingCart.Infrastructure.Data.csproj", "ShoppingCart.Infrastructure.Data/"]
    COPY ["ShoppingCart.Infrastructure.Business/ShoppingCart.Infrastructure.Business.csproj", "ShoppingCart.Infrastructure.Businesss/"]
    COPY ["ShoppingCart.Services.Interfaces/ShoppingCart.Services.Interfaces.csproj", "ShoppingCart.Services.Interfaces/"]
    
    
    RUN dotnet restore "ShoppingCart.API/ShoppingCart.API.csproj"
    COPY . .
    WORKDIR "/src/ShoppingCart.API"
    RUN dotnet build "ShoppingCart.API.csproj" -c Release -o /app/build
    
    FROM build AS publish
    RUN dotnet publish "ShoppingCart.API.csproj" -c Release -o /app/publish
    
    FROM base AS final
    WORKDIR /app
    COPY --from=publish /app/publish .
    ENTRYPOINT ["dotnet", "ShoppingCart.API.dll"]
    Ответ написан
    Комментировать
  • Как вытащить данные с linq?

    @lucky4 Автор вопроса
    .Where(x => x.ProductCategories.Any(x => x.CategoryId == categoryId))
    Ответ написан
    Комментировать
  • Как узнать все методы обьекта в c#?

    @lucky4
    Существует комбинация клавиш Cntr+F12 на метод/класс/свойство = откроет прототип функции и за одно, можно увидеть где, в каком классе от от какого класса он реализуется или от интерфейса.
    Ну и как было упомянуто выше - рефлексия
    Ответ написан
    Комментировать
  • Что осваивать для веба после изучения основ C# (классы, методы, конструкторы, интерфейсы)?

    @lucky4
    я не советую, но расскажу как бы я учил и как учился:
    1) изучил шарпы;
    2) минимальные основы sql
    2.1) выборка данных, с агрегативными функциями / с join;
    2.2) создание таблиц(pk, fk) и их отношения

    3) изучил бы ef core(code first подход)
    3.1) что такое fluentApi / data annotaition;
    3.2) разница между eager / explicit / lazy;
    3.3) создание отношений

    4) учил бы .net core web api на практике. В процессе создание веб-приложения ознакомишся с принципом DI, model binding, filtering.

    При создании приложения, посомтри в сторону архитектуры слойной(n-layered / onion architectures). Сделай проект с использованием Rattern Repository(разберись почему его некоторые считают антипаттероном и тд.) + совместно с Rattern Repository используй Unit of Work.

    *покопайся чучуть в asp.net mvc, с razor. пойми разницу между ними двумя.
    **если быстро хочешь на работу, прочитай рихтера, как работает crl(cls/cts), сборщик мусора, домены(будет хорошим бустом).
    Ответ написан
    2 комментария
  • Как запустить потоки поочередно?

    @lucky4
    static void Main(string[] args) {
                Thread primaryThread = Thread.CurrentThread;
                primaryThread.Name = "Thread #1";
                primaryThread.Priority = ThreadPriority.Lowest;
    
                Thread secondaryThread = new Thread(RunSecondThread);
                secondaryThread.Priority = ThreadPriority.Highest;
                secondaryThread.Start();
                secondaryThread.Join();
    
                for (int counter = 0; counter < 5; counter++) {
                    Console.WriteLine("{0} -> {1}", primaryThread.Name, counter);
                    Thread.Sleep(200);
                }
            }
    Ответ написан
    Комментировать