Я работаю над консольным поисковым инструментом для «Варрантов» в игре, в которую я играю, которая выполняет поиск по листу Google из API листов Google и C#. Первоначально я сделал это на python, и он работал отлично, но у меня было много проблем с распространением моего python файла, поэтому я перешел на C#.
API вызывает данные отлично, и я Я могу представить список всех данных, которые я искал при запуске, но когда я пытаюсь сохранить их в списке файлов внутри моей программы, я получаю следующее: Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object.
Я также добавил в раздел, который говорит мне тип данных, который я вызываю с строкой [1], и он говорит (только один "` `` ", пришлось удвоить для форматирования): System.Collections.Generic.List``1[System.Object]
using Google.Apis.Auth.OAuth2;
using Google.Apis.Sheets.v4;
using Google.Apis.Sheets.v4.Data;
using Google.Apis.Services;
using Google.Apis.Util.Store;
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading;
using System.Diagnostics;
namespace WarrantSearchProgram
{
class Program
{
static readonly string[] Scopes = { SheetsService.Scope.SpreadsheetsReadonly };
static readonly string ApplicationName = "WarrantSearchProgram";
static readonly string SpreadsheetId = "SpreadsheetId";
static readonly string sheet = "Imported Data";
static SheetsService service;
//List of Warrant Column Variables... Only nameList is being used for now
public static IList<object> testOBJ;
public static List<object> wtStatus;
public static List<object> wtType;
public static List<object> wtNum;
public static IList<object> nameList;
public static List<object> wtCivName;
public static List<object> wtDOB;
public static List<object> wtAddress;
public static List<object> wtJs;
public static List<object> wtCharges;
public static List<object> wtEvidence;
public static List<object> wtReqOfc;
public static List<object> wtReqOfcNum;
static void Main(string[] args)
{
//Set console color and other general settings
Console.Title = "DOJ Warrant Search Program UNOFFICIAL";
Console.BackgroundColor = ConsoleColor.Black;
Console.ForegroundColor = ConsoleColor.Green;
// Initialization of creds and google sheets
GoogleCredential credential;
using (var stream = new FileStream("credentials.json", FileMode.Open, FileAccess.Read))
{
credential = GoogleCredential.FromStream(stream)
.CreateScoped(Scopes);
}
// Create Google Sheets API service.
service = new SheetsService(new BaseClientService.Initializer()
{
HttpClientInitializer = credential,
ApplicationName = ApplicationName,
});
//First initilization of warrant sheet info, creates and manages variables.
UpdateSheetData();
while (true)
{
// Main repeating text and SEARCH INPUT
Console.WriteLine("-----------------------------------------------");
Console.WriteLine("Please type in a full name to search for warrants.");
Console.WriteLine("Only ACTIVE warrants will be shown.");
Console.WriteLine("Type in a warrant number to show extra info, including evidence, on just that warrant");
Console.WriteLine("-----------------------------------------------");
Console.Write("Search >>> ");
string searchName = Console.ReadLine();
searchName = searchName.ToUpper();
Console.WriteLine();
Console.Beep();
Console.Clear();
}
}
static void UpdateSheetData()
{
var range = $"{sheet}!A:F";
SpreadsheetsResource.ValuesResource.GetRequest request =
service.Spreadsheets.Values.Get(SpreadsheetId, range);
var response = request.Execute();
IList<IList<object>> values = response.Values;
if (values != null && values.Count > 0)
{
foreach (var row in values)
{
// Calls the row (2nd, name) and displays each name in list
Console.WriteLine("{0}", row[1]);
Console.WriteLine(row.GetType().ToString());
// Attempts to build list of names in program ERROR HERE
nameList.Add(row[1]);
}
}
else
{
Console.WriteLine("No data found.");
}
}
}
}
Я удалил части кода, которые не имеет ничего общего с этим, так что его легче читать ... Как вы можете сказать, я пробовал IList<object>, List<object>, and List<string>
в разное время, и у меня не получилось.
Моя цель здесь - загрузить каждый столбец данных в список, который я затем могу выполнять поиск, индексировать и отображать совпадающие данные из других списков. Это все не очень сложно сделать, когда я могу загрузить данные в программу и разделить их. ошибка в строке 98