예제 #1
0
        public void Extensiblity()
        {
            Formatter.AppendFormatterResolver(t =>
            {
                if (t == typeof(CannotSerialize))
                {
                    return(new CannotSerializeFormatter());
                }

                return(null);
            });

            Formatter.AppendFormatterResolver(t =>
            {
                if (t.IsGenericType && t.GetGenericTypeDefinition() == typeof(KeyValuePair <,>))
                {
                    return(Activator.CreateInstance(typeof(KeyValuePairFormatter <,>).MakeGenericType(t.GenericTypeArguments)));
                }

                return(null);
            });

            Formatter.AppendFormatterResolver(t =>
            {
                if (t == typeof(Uri))
                {
                    return(new UriFormatter());
                }

                return(null);
            });

            var a = ZeroFormatterSerializer.Convert(new CannotSerialize(99, "aaa"));

            a.MyProperty1.Is(99);
            a.MyProperty2.Is("aaa");

            var b = ZeroFormatterSerializer.Convert(new KeyValuePair <string, int>("hoge", 1000));

            b.Key.Is("hoge");
            b.Value.Is(1000);

            var c = ZeroFormatterSerializer.Convert(new Uri("http://google.co.jp/"));

            c.ToString().Is("http://google.co.jp/");
        }
예제 #2
0
        public static void ManualRegister()
        {
            if (manualregistered)
            {
                return;
            }
            manualregistered = true;
            Formatter.AppendFormatterResolver(t =>
            {
                /*if (t.IsSubclassOf(typeof(global::RandomEnchant.Status))||t==typeof(Status))
                 * {
                 *  //Type first = typeof(global::RandomEnchant.StatusModifierFormatter<,>).GetGenericArguments().First();//.MakeGenericType(t.GetGenericArguments().StartsWith());
                 *  var formatter=typeof(global::RandomEnchant.StatusFormatter<,>).MakeGenericType(typeof(Formatters.DefaultResolver),t);
                 *  //Debug.Log(formatter.ToString());
                 *  return Activator.CreateInstance(formatter);
                 * }
                 * else if(t==typeof(IStatus))
                 * {
                 *  var formatter=typeof(global::RandomEnchant.IStatusFormatter<>).MakeGenericType(typeof(Formatters.DefaultResolver));
                 *
                 *  return Activator.CreateInstance(formatter);
                 * }
                 * else if(t==typeof(IList<IStatus>))
                 * {
                 *  var formatter=typeof(global::RandomEnchant.IStatusFormatter<>).MakeGenericType(typeof(Formatters.DefaultResolver));
                 *
                 *  return Activator.CreateInstance(formatter);
                 * }
                 * else if (t.IsSubclassOf(typeof(global::RandomEnchant.StatusHolder))||t==typeof(StatusHolder))
                 * {
                 *  //Type first = typeof(global::RandomEnchant.StatusModifierFormatter<,>).GetGenericArguments().First();//.MakeGenericType(t.GetGenericArguments().StartsWith());
                 *  var formatter=typeof(global::RandomEnchant.StatusHolderFormatter<,>).MakeGenericType(typeof(Formatters.DefaultResolver),t);
                 *  //Debug.Log(formatter.ToString());
                 *  return Activator.CreateInstance(formatter);
                 * }
                 * else if(t==typeof(IStatusHolder))
                 * {
                 *  var formatter=typeof(global::RandomEnchant.IStatusHolderFormatter<>).MakeGenericType(typeof(Formatters.DefaultResolver));
                 *
                 *  return Activator.CreateInstance(formatter);
                 * }
                 * else if (t.IsGenericType && t.GetGenericTypeDefinition() == typeof(global::RandomEnchant.StatusModifier<>))
                 * {
                 *  //Type first = typeof(global::RandomEnchant.StatusModifierFormatter<,>).GetGenericArguments().First();//.MakeGenericType(t.GetGenericArguments().StartsWith());
                 *  //Debug.Log(first);
                 *  var formatter=typeof(global::RandomEnchant.StatusModifierFormatter<,>).MakeGenericType(t.GetGenericArguments().StartsWith(typeof(Formatters.DefaultResolver)));
                 *  //Debug.Log(formatter.ToString());
                 *  return Activator.CreateInstance(formatter);
                 * }
                 * else if(t==typeof(IStatusModifier<IStatus>))
                 * {
                 *  var formatter=typeof(global::RandomEnchant.IListFormatter<,>).MakeGenericType(t.GetGenericArguments().StartsWith(typeof(Formatters.DefaultResolver)));
                 *
                 *  return Activator.CreateInstance(formatter);
                 * }
                 *
                 * else if (t.IsGenericType && t.GetGenericTypeDefinition() == typeof(global::RandomEnchant.Suffix<>))
                 * {
                 *  //Type first = typeof(global::RandomEnchant.StatusModifierFormatter<,>).GetGenericArguments().First();//.MakeGenericType(t.GetGenericArguments().StartsWith());
                 *  //Debug.Log(first);
                 *  var formatter=typeof(global::RandomEnchant.SuffixFormatter<,>).MakeGenericType(t.GetGenericArguments().StartsWith(typeof(Formatters.DefaultResolver)));
                 *  //Debug.Log(formatter.ToString());
                 *  return Activator.CreateInstance(formatter);
                 * }
                 * else if(t==typeof(ISuffix<IStatus>))
                 * {
                 *  var formatter=typeof(global::RandomEnchant.ISuffixFormatter<>).MakeGenericType(typeof(Formatters.DefaultResolver));
                 *
                 *  return Activator.CreateInstance(formatter);
                 * }
                 * else if (t.IsGenericType && t.GetGenericTypeDefinition() == typeof(global::RandomEnchant.Prefix<>))
                 * {
                 *  //Type first = typeof(global::RandomEnchant.StatusModifierFormatter<,>).GetGenericArguments().First();//.MakeGenericType(t.GetGenericArguments().StartsWith());
                 *  //Debug.Log(first);
                 *  var formatter=typeof(global::RandomEnchant.PrefixFormatter<,>).MakeGenericType(t.GetGenericArguments().StartsWith(typeof(Formatters.DefaultResolver)));
                 *  //Debug.Log(formatter.ToString());
                 *  return Activator.CreateInstance(formatter);
                 * }
                 * else if(t==typeof(IPrefix<IStatus>))
                 * {
                 *  var formatter=typeof(global::RandomEnchant.IPrefixFormatter<>).MakeGenericType(typeof(Formatters.DefaultResolver));
                 *
                 *  return Activator.CreateInstance(formatter);
                 * }*/


                return(null); // fallback to the next resolver
            });
        }