#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, вы увидите, что это всего лишь фрагмент решения, показывающий обязательное использование и пример кода