Пример #1
0
        /// <summary>
        /// Takes the name of the given type and makes it friendly for serialization
        /// by removing problematic characters.
        /// </summary>
        public static string SerializationFriendlyName(this Type t)
        {
            return(TypeToNameLookup.GetOrAdd(t, type =>
            {
                var index = t.Name.IndexOf('`');
                if (index >= 0)
                {
                    var result = t.Name.Substring(0, index) + "Of";
                    var args = t.GetGenericArguments();
                    for (var i = 0; i < args.Length; i++)
                    {
                        result += args[i].SerializationFriendlyName();
                        if (i != args.Length - 1)
                        {
                            result += "And";
                        }
                    }

                    if (args.Length == 2)
                    {
                        if (typeof(KeyValuePair <,>).MakeGenericType(args[0], args[1]) == t)
                        {
                            result = "NServiceBus." + result;
                        }
                    }

                    return result;
                }
                return type.Name;
            }));
        }
Пример #2
0
        /// <summary>
        /// Takes the name of the given type and makes it friendly for serialization
        /// by removing problematic characters.
        /// </summary>
        public static string SerializationFriendlyName(this Type t)
        {
            lock (TypeToNameLookup)
            {
                string typeName;
                if (TypeToNameLookup.TryGetValue(t, out typeName))
                {
                    return(typeName);
                }
            }

            var index = t.Name.IndexOf('`');

            if (index >= 0)
            {
                var result = t.Name.Substring(0, index) + "Of";
                var args   = t.GetGenericArguments();
                for (var i = 0; i < args.Length; i++)
                {
                    result += args[i].SerializationFriendlyName();
                    if (i != args.Length - 1)
                    {
                        result += "And";
                    }
                }

                if (args.Length == 2)
                {
                    if (typeof(KeyValuePair <,>).MakeGenericType(args) == t)
                    {
                        result = "NServiceBus." + result;
                    }
                }

                lock (TypeToNameLookup)
                    TypeToNameLookup[t] = result;

                return(result);
            }

            lock (TypeToNameLookup)
                TypeToNameLookup[t] = t.Name;

            return(t.Name);
        }
Пример #3
0
        /// <summary>
        /// Takes the name of the given type and makes it friendly for serialization
        /// by removing problematic characters.
        /// </summary>
        /// <param name="t"></param>
        /// <returns></returns>
        public static string SerializationFriendlyName(this Type t)
        {
            lock (TypeToNameLookup)
                if (TypeToNameLookup.ContainsKey(t))
                {
                    return(TypeToNameLookup[t]);
                }

            var args = t.GetGenericArguments();

            if (args != null)
            {
                int index = t.Name.IndexOf('`');
                if (index >= 0)
                {
                    string result = t.Name.Substring(0, index) + "Of";
                    for (int i = 0; i < args.Length; i++)
                    {
                        result += args[i].SerializationFriendlyName();
                        if (i != args.Length - 1)
                        {
                            result += "And";
                        }
                    }

                    if (args.Length == 2)
                    {
                        if (typeof(KeyValuePair <,>).MakeGenericType(args) == t)
                        {
                            result = "LightRail.ServiceBus.Serialization." + result;
                        }
                    }

                    lock (TypeToNameLookup)
                        TypeToNameLookup[t] = result;

                    return(result);
                }
            }

            lock (TypeToNameLookup)
                TypeToNameLookup[t] = t.Name;

            return(t.Name);
        }