Определение типа или пространства имен или ожидаемая проблема конца файла при компиляции

#c# #asp.net #.net #asp.net-mvc

#c# #asp.net #.net #asp.net-mvc

Вопрос:

Я создаю веб-приложение expo sender, но у меня проблема с компиляцией проекта. Это заставляет меня говорить

«Тип или определение пространства имен, или ожидаемый конец файла»

Мой код выглядит так, и я получил его из здесь

 using MobileServices.Client;
using MobileServices.Models;
using System;
using System.Collections.Generic;
using System.Linq;


var expoSDKClient = new PushApiClient();
var pushTicketReq = new PushTicketRequest()
{
    PushTo = new List<string>() { "..." },
    PushBadgeCount = 7,
    PushBody = ""
};
var result = expoSDKClient.PushSendAsync(pushTicketReq).GetAwaiter().GetResult();

if (result?.PushTicketErrors?.Count() > 0)
{
    foreach (var error in result.PushTicketErrors)
    {
        Console.WriteLine($"Error: {error.ErrorCode} - {error.ErrorMessage}");
    }
}

var pushReceiptResult = expoSDKClient.PushGetReceiptsAsync(pushReceiptReq).GetAwaiter().GetResult();

if (pushReceiptResult?.ErrorInformations?.Count() > 0)
{
    foreach (var error in result.ErrorInformations)
    {
        Console.WriteLine($"Error: {error.ErrorCode} - {error.ErrorMessage}");
    }
}
foreach (var pushReceipt in pushReceiptResult.PushTicketReceipts)
{
    Console.WriteLine($"TicketId amp; Delivery Status: {pushReceipt.Key} {pushReceipt.Value.DeliveryStatus} {pushReceipt.Value.DeliveryMessage}");
}
  

Это мое первое приложение на C #, которое я создаю, и я искал ошибку, но без результата. Не могли бы вы, пожалуйста, помочь мне, как это решить. Я знаю, что это что-то простое, но мне действительно нужна помощь, потому что я застрял.

Ответ №1:

Вам нужно объявить как пространство имен, так и класс, подобный этому, а затем поместить их в функцию.

Каждый фрагмент кода в c # должен быть объявлен внутри типа (это может быть класс, или структура, или интерфейс и т.д.

Все типы, в свою очередь, объявляются внутри интерфейсов, которые являются логическими группировками типов и других интерфейсов.

Все (или большая его часть) поведение вашего кода, моделирующего поведение, должно быть объявлено внутри функций.

 using MobileServices.Client;
using MobileServices.Models;
using System;
using System.Collections.Generic;
using System.Linq;

namespace mynamespace {

    public class ExpoClient {
         public void DoPushSend() {
             var expoSDKClient = new PushApiClient();
             var pushTicketReq = new PushTicketRequest()
             {
                  PushTo = new List<string>() { "..." },
                  PushBadgeCount = 7,
                  PushBody = ""
             };
             var result = expoSDKClient.PushSendAsync(pushTicketReq).GetAwaiter().GetResult();

             if (result?.PushTicketErrors?.Count() > 0)
             {
                  foreach (var error in result.PushTicketErrors)
                  {
                        Console.WriteLine($"Error: {error.ErrorCode} - {error.ErrorMessage}");
                   }
             }


             var pushReceiptResult = expoSDKClient.PushGetReceiptsAsync(pushReceiptReq).GetAwaiter().GetResult();

             if (pushReceiptResult?.ErrorInformations?.Count() > 0) {
                   foreach (var error in result.ErrorInformations)
                  {
                         Console.WriteLine($"Error: {error.ErrorCode} - {error.ErrorMessage}");
                   }
          }
          foreach (var pushReceipt in  pushReceiptResult.PushTicketReceipts)
          {
                Console.WriteLine($"TicketId amp; Delivery Status: {pushReceipt.Key} {pushReceipt.Value.DeliveryStatus} {pushReceipt.Value.DeliveryMessage}");
          }
      }
   }
}
  

Будьте осторожны, код в репозитории представляет собой фрагмент целого, возможно, его нужно разбить на большее количество функций. Мое исправление предназначено только для компиляции вашего кода.

Ответ №2:

Похоже, что пример кода, который вы используете, написан на C # 9, который в настоящее время находится в предварительном просмотре. В этой версии представлена новая функция, называемая операторами верхнего уровня, которая позволяет вам писать код, не заключая его в метод класса. Вероятно, вы используете более раннюю версию, которая ожидает, что точка входа будет находиться в статическом методе с именем Main.

Комментарии:

1. Не совсем, если вы проследите за кодом в github, вы увидите, что это всего лишь фрагмент решения, показывающий обязательное использование и пример кода