unityc#根据变量名任意设置修改保存读取数据

public class Base_all
{

    static System.Reflection.FieldInfo fi;
    public static void Set(object o,string var_name, string value)
    {

        fi = o.GetType().GetField(var_name, System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.Public |
            System.Reflection.BindingFlags.NonPublic| System.Reflection.BindingFlags.Instance);

        o.GetType().GetField(var_name, System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.Public | 
            System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).SetValue(o, Prase(fi.FieldType, value));

    }
    public static object Get(object o, string var_name)
    {
        return o.GetType().GetField(var_name, System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.Public|
            System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance).GetValue(o);
    }
    public static object Prase(System.Type t, string s)
    {

        if (t == typeof(bool))
        {
            return bool.Parse(s);
        }
        if (t == typeof(float))
        {
            return float.Parse(s);
        }
        if (t == typeof(int))
        {
            return int.Parse(s);
        }
        if (t == typeof(string))
        {
            return s;
        }
        return null;
    }

    public static void Save_init(object o, string p)
    {
        System.IO.FileInfo fileInfo = new System.IO.FileInfo(p);
        if (!fileInfo.Directory.Exists)
        {
            fileInfo.Directory.Create();
        }
        string s = "";
        System.Reflection.FieldInfo[] fis = o.GetType().GetFields(System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.Public);
        for (int i = 0; i < fis.Length; i++)
        {
            if (Ishavetype(fis[i].FieldType))
            {
                s += fis[i].Name + "\t" + fis[i].GetValue(o) + "\n";
            }
        }
        System.IO.File.WriteAllText(p, s, System.Text.Encoding.UTF8);
    }
    public static bool Ishavetype(System.Type t)
    {

        if (t == typeof(bool))
        {
            return true;
        }
        if (t == typeof(float))
        {
            return true;
        }
        if (t == typeof(int))
        {
            return true;
        }
        if (t == typeof(string))
        {
            return true;
        }

        return false;
    }

    public static void Load_init(object o,string s)
    {
        string[] vs = s.Replace("\r", "").Split('\n');
        string[] ps;
        for (int i = 0; i < vs.Length; i++)
        {
            ps = vs[i].Split('\t');
            if (ps.Length > 1)
            {
                Set(o,ps[0], ps[1]);
            }
        }

    }
}

自己可以根据需求设置任意类型的数据,object 为实列化对象,var_name变量名,value修改值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值