示例#1
0
        internal static TomlTable CreateFromClass <T>(ITomlRoot root, T obj, TableTypes tableType)
            where T : class
        {
            if (root == null)
            {
                throw new ArgumentNullException(nameof(root));
            }
            if (obj == null)
            {
                throw new ArgumentNullException(nameof(obj));
            }

            TomlTable tt = new TomlTable(root, tableType);

            var props      = root.Settings.GetSerializationProperties(obj.GetType());
            var allObjects = new List <Tuple <string, TomlObject> >();

            foreach (var p in props)
            {
                object val = p.GetValue(obj, null);
                if (val != null)
                {
                    TomlObject to = TomlObject.CreateFrom(root, val, p);
                    AddComments(to, p);
                    allObjects.Add(Tuple.Create(p.Name, to));
                }
            }

            tt.AddScopeTypesLast(allObjects);

            return(tt);
        }