背景
在开发过程中,为了减少代码量,使用接口进行约束,最后完成数据的解析。实现的原理,泛型方法中对接口约束,只有继承目标接口的类可以使用,类中实现了接口方法,同时将解析好的数据装入模板类中,完成功能。其他有类似功能的实现,只需要继承目标接口即可。
using LitJson;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test28 : MonoBehaviour
{
private string tempString = "[[1,2],[4,9]]";
// Start is called before the first frame update
void Start()
{
var data= StringToList<ChangeNum>(tempString);
for (int i=0;i<data.Count;i++)
{
Debug.LogError(data[i].ItemId+"<>"+data[i].ItemNum);
}
}
private List<T> StringToList<T>(string reward) where T : IItemData,new ()
{
var jsonData = JsonMapper.ToObject<int[][]>(reward);
var tempList = new List<T>(jsonData.Length);
for (int i=0;i<jsonData.Length;i++)
{
var newT = new T();
var data= jsonData[i];
newT.ItemId = data[0];
newT.ItemNum = data[1];
tempList.Add(newT);
}
return tempList;
}
public interface IItemData
{
int ItemId { get; set; }
int ItemNum{ get; set; }
}
public class ChangeNum : IItemData
{
public int ItemId { get ; set; }
public int ItemNum { get ; set; }
}
}