示例#1
0
        public static void ExportDoc(string target)
        {
            DocItems root = new DocItems()
            {
                Remark = "数据表:即textfiles/[$type].txt文件, 可以copy进Excel中, A-Z对应列名",
                list   = (from t in typeof(Heluo.Data.Item).Assembly.GetTypes()
                          where t.IsSubclassOf(typeof(Heluo.Data.Item)) && !t.HasAttribute <Hidden>(false)
                          select Activator.CreateInstance(t) as Heluo.Data.Item).ToList()
            };
            JsonSerializerSettings setting = new JsonSerializerSettings
            {
                NullValueHandling = NullValueHandling.Ignore,
                Converters        = new JsonConverter[]
                {
                    new Vector3Converter(),
                    new EnumToStringConverter(),
                    new ModOutputNodeConverter(),
                    new ItemDocConverter(),
                }
            };
            string jsonStr = JsonConvert.SerializeObject(root, Formatting.Indented, setting);

            Console.WriteLine(jsonStr);
            GlobalLib.ToFile(jsonStr, target);
        }
示例#2
0
        public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
        {
            Type    type = value.GetType();
            JObject o    = new JObject
            {
                { "$type", type.Name }
            };
            var memberInfos = (from f in type.GetFields()
                               where f.HasAttribute <FieldOrderAttribute>() && !f.IsLiteral
                               select(f as MemberInfo, f.GetAttribute <DisplayNameAttribute>()?.Name, f.FieldType, f.GetAttribute <FieldOrderAttribute>().Order)).ToList();

            memberInfos.AddRange((from p in type.GetProperties()
                                  where p.HasAttribute <FieldOrderAttribute>()
                                  select(p as MemberInfo, p.GetAttribute <DisplayNameAttribute>()?.Name, p.PropertyType, p.GetAttribute <FieldOrderAttribute>().Order)).ToList());
            memberInfos.Sort((a, b) => { return(a.Order.CompareTo(b.Order)); });
            for (int i = 0; i < memberInfos.Count; ++i)
            {
                var info = memberInfos[i];
                o.Add(((char)('A' + i)).ToString(), GlobalLib.TypeToDoc(info.FieldType, info.Name));
                var v = info.Item1.MemberType == MemberTypes.Field ? (info.Item1 as FieldInfo).GetValue(value) : (info.Item1 as PropertyInfo).GetValue(value);
                o.Add(info.Item1.Name, v == null ? null : JToken.FromObject(v, serializer));
            }
            o.WriteTo(writer);
        }
示例#3
0
 public void MyTestInitialize()
 {
     GlobalLib.CloseAllBrowsers();
 }