Exemplo n.º 1
0
        protected static ObjectGraph getGraph(IMaybe <object> anyObject, string childName, Type childType, Predicate <string> exclude,
                                              StringStringHash signatures)
        {
            var obj = assert(() => anyObject).Must().HaveValue().Value;

            if (childType.IsArray)
            {
                var array = (Array)obj;
                var list  = new List <string>();
                for (var i = 0; i < array.Length; i++)
                {
                    list.Add(array.GetValue(i).ToNonNullString());
                }

                return(new ObjectGraph(childName, $"[{list.ToString(", ")}]"));
            }
            else if (obj is FileName || obj is FolderName)
            {
                return(new ObjectGraph(childName, obj.ToString()));
            }
            else if (!(obj is IConvertible))
            {
                return(Serialize(obj, exclude, signatures));
            }
            else
            {
                return(new ObjectGraph(childName, obj.ToNonNullString()));
            }
        }
Exemplo n.º 2
0
        public static ObjectGraph Serialize(object obj, Predicate <string> exclude, StringStringHash signatures)
        {
            assert(() => obj).Must().Not.BeNull().OrThrow();

            var graph     = RootObjectGraph();
            var type      = obj.GetType();
            var evaluator = new PropertyEvaluator(obj);
            var infos     = type.GetProperties(BindingFlags.Instance | BindingFlags.Public | BindingFlags.GetProperty);

            foreach (var info in infos)
            {
                var signature = info.Name;
                var childName = signature.ToCamel();
                if (evaluator.Attribute <SignatureAttribute>(signature).If(out var a))
                {
                    childName = a.Signature;
                }

                if (exclude(signature))
                {
                    continue;
                }

                if (((IHash <string, object>)evaluator).If(signature, out var objectValue))
                {
                    if (objectValue.IsNull())
                    {
                        continue;
                    }

                    var childType = evaluator.Type(signature);
                    graph[childName] = getGraph(objectValue.Some(), childName, childType, exclude, signatures);
                }
            }

            return(graph);
        }
Exemplo n.º 3
0
 public static void SetObject(this FileName fileName, object obj, StringStringHash signatures)
 {
     fileName.SetObject(obj, sig => false, signatures);
 }
Exemplo n.º 4
0
 public static void SetObject(this FileName fileName, object obj, Predicate <string> exclude, StringStringHash signatures)
 {
     fileName.Text = Serialize(obj, exclude, signatures).ToString();
 }
Exemplo n.º 5
0
 public static ObjectGraph Serialize(object obj, StringStringHash signatures) => Serialize(obj, sig => false, signatures);
Exemplo n.º 6
0
 public static IResult <ObjectGraph> Serialize(object obj, StringStringHash signatures)
 {
     return(Serialize(obj, sig => false, signatures));
 }
Exemplo n.º 7
0
 public static IResult <ObjectGraph> Serialize(object obj, Predicate <string> exclude, StringStringHash signatures)
 {
     return(tryTo(() => ObjectGraph.Serialize(obj, exclude, signatures)));
 }