gpt4 book ai didi

c# - 使用列表和未定义类型作为参数和返回类型

转载 作者:行者123 更新时间:2023-11-30 23:16:27 24 4
gpt4 key购买 nike

我正在尝试创建一种方法,该方法将文件位置列表作为参数并返回该用户定义类型的列表。我已经创建了一个返回类型属性的方法,但我想使用属性的名称来尝试将它们与 .json 文件中的键匹配。

我已经让代码工作了,但前提是明确说明了类型。我有一个名为 Item 的用户定义类型,它看起来像这样:

public class Item
{
public int ID { get; set; }
public string Name { get; set; }
public double Weight { get; set; }
public int Value { get; set; }

public Item(int id, string name, double weight, int value)
{
ID = id;
Name = name;
Weight = weight;
Value = value;
}
}

这很好,但在某些时候,我可能想对另一个用户定义类型的列表使用相同的过程,例如:

public class Car
{
public string Registration { get; set; }
public string Model { get; set; }
public float TopSpeed { get; set; }

public Item(string registration, string model, float topSpeed, int value)
{
Registration = registration;
Model = model;
TopSpeed = topSpeed;
}
}

这是可能的还是我遗漏了什么?我是否必须创建一个重复的方法,唯一不同的是列表的类型?这是我的部分代码,我希望它能解释我想要实现的目标:

using System.Collections;
using System.Collections.Generic;
using LitJson;
using System.IO;
using System;
using System.Linq;
using System.Reflection;

namespace Program
{
class MainClass
{
public static void Main(string[] args)
{
DataParser dataParser = new DataParser();
List<Item> database = new List<Item>();
string location = "/Items.json";
database = dataParser.ConstructItemDatabase(database, location);
}
}

public class DataParser
{
public List<IndefiniteType> ConstructItemDatabase(List<IndefiniteType> list, string fileLocation)
{
//search property names of the list type and add create new objects within the list, based on the file.

return list;
}
}
}

非常感谢。

最佳答案

您可能正在寻找泛型和 Newtonsoft JS 序列化程序:

public class DataParser
{
// to deserialize database from file
public T ConstructItemDatabase<T>(string fileLocation)
{
var json = File.ReadAllText(fileLocation);

return JsonConvert.DeserializeObject<T>(json);
}

// to serialize (save) database to a file
public void SaveItemDatabaseToJson<T>(string fileLocation, T database)
{
var json = JsonConvert.SerializeObject(database);

File.WriteAllText(fileLocation, json);
}
}

使用示例:

var parser = new DataParser();

parser.SaveItemDatabaseToJson("myDb.json", myListToSerialize);

var myDesirializedList = parser.ConstructItemDatabase<List<Car>>("myDb.json");

附言

通过打开 Nuget 包管理器并在 nuget.org 上搜索它,将 Newtonsoft.Json 库添加到您的项目。

关于c# - 使用列表和未定义类型作为参数和返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42001353/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com