【问题标题】:Type or namespace definition, or end-of-file expected problem on compiling类型或命名空间定义,或编译时预期的文件结尾问题
【发布时间】:2020-09-10 05:55:25
【问题描述】:

我正在创建一个基于 Web 的 expo sender 应用程序,但我在编译项目时遇到了问题。它让我一直在说

“类型或命名空间定义,或预期的文件结尾”

我的代码看起来像这样,我从here得到它

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 & Delivery Status: {pushReceipt.Key} {pushReceipt.Value.DeliveryStatus} {pushReceipt.Value.DeliveryMessage}");
}

这是我正在构建的第一个 C# 应用程序,我搜索了错误但没有结果。你能帮我解决这个问题吗?我知道这很简单,但我真的需要帮助,因为我遇到了困难。

【问题讨论】:

    标签: c# asp.net .net asp.net-mvc


    【解决方案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 & Delivery Status: {pushReceipt.Key} {pushReceipt.Value.DeliveryStatus} {pushReceipt.Value.DeliveryMessage}");
              }
          }
       }
    }
    

    注意,存储库中的代码是整体的sn-p,可能需要分解为更多功能。我的修复只是为了让你的代码编译。

    【讨论】:

      【解决方案2】:

      您使用的代码示例似乎是用 C# 9 编写的,目前处于预览阶段。这个版本引入了一个称为顶级语句的新功能,它允许您编写代码而不将其包含在类的方法中。您可能使用的是早期版本,它希望入口点位于名为 Main 的静态方法中。

      【讨论】:

      • 不是真的,如果你按照github中的代码,你会发现它只是一个解决方案的sn-p,显示了强制使用和示例代码
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-16
      • 1970-01-01
      • 2021-12-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多