反射(Reflection)一、

(感谢张子阳老师的著作《.Net之美》一书,感谢hcw_peter老师分享的关于DataTable文章)

1.创建Define类,创建状态枚举


public enum BookingStatus
{
    未提交 = 1,
    已提交,
    已取消,
    受理中,
    已退回,
    已定妥 = 6,
    已过期
}
 
public class Defines
{
    public Defines()
    { }
}

2.在Unity中创建实例,使用反射遍历枚举字段

using UnityEngine;
using System.Collections;
using System.Data;
using System.Data.SqlClient;
using System;

using System.Collections.Generic;
using UnityEditorInternal.VersionControl;
using System.Reflection;

using UnityEngine.UI;
using System.IO;
using System.Xml;

public class SoftwareRun : MonoBehaviour
{
    public DataTable m_dataTable = new DataTable();
    Text text;

    void Start ()
    {
        m_dataTable = GetDataTable("StudyReflection");
        text = GameObject.Find("Text").GetComponent<Text>();
        ConvertToXmlToString(m_dataTable);
    }

    void Update ()
    {
    
    }

    private  DataTable GetDataTable(string _dataTableName)
    {
        //创建类型
        Type t = typeof(BookingStatus);

        //获取字段信息对象集合
        FieldInfo[] fileArray = t.GetFields();

        DataTable table = new DataTable(_dataTableName);

        //创建列
        table.Columns.Add("Name", Type.GetType("System.String"));
        table.Columns.Add("Value", Type.GetType("System.Int32"));

        //遍历集合
        foreach (FieldInfo field in fileArray)
        {
            if (!field.IsSpecialName)
            {
                DataRow row = table.NewRow();
                row[0] = field.Name;
                row[1] = Convert.ToInt32(field.GetRawConstantValue());
                table.Rows.Add(row);
            }
        }
        return table;

    }

    private void ConvertToXmlToString(DataTable _dataTable)
    {
        TextWriter tw = new StringWriter();

        _dataTable.TableName = _dataTable.TableName.Length == 0 ? "StudyReflection" : _dataTable.TableName;

        _dataTable.WriteXmlSchema(tw);
        _dataTable.WriteXml(tw);
        

        text.text = tw.ToString();


    }
}

3.最后在Unity中的编译

 

 

posted @ 2016-10-31 21:35  Dean二十七  阅读(248)  评论(0)    收藏  举报