예제 #1
0
        internal static string GetTypeIdentity(Type type)
        {
            Assumes.NotNull(type);
            string typeIdentity = null;

            if (!TypeIdentityCache.TryGetValue(type, out typeIdentity))
            {
                if (!type.IsAbstract && type.IsSubclassOf(typeof(Delegate)))
                {
                    MethodInfo method = type.GetMethod("Invoke");
                    typeIdentity = ContractNameServices.GetTypeIdentityFromMethod(method);
                }
                else
                {
                    StringBuilder typeIdentityStringBuilder = new StringBuilder();
                    WriteTypeWithNamespace(typeIdentityStringBuilder, type);
                    typeIdentity = typeIdentityStringBuilder.ToString();
                }

                Assumes.IsTrue(!string.IsNullOrEmpty(typeIdentity));
                TypeIdentityCache.Add(type, typeIdentity);
            }

            return(typeIdentity);
        }
예제 #2
0
        internal static string GetTypeIdentity(Type type, bool formatGenericName)
        {
            Assumes.NotNull(type);
            string typeIdentity = null;

            if (!TypeIdentityCache.TryGetValue(type, out typeIdentity))
            {
                if (!type.IsAbstract && type.HasBaseclassOf(typeof(Delegate)))
                {
                    MethodInfo method = type.GetMethod("Invoke");
                    typeIdentity = ContractNameServices.GetTypeIdentityFromMethod(method);
                }
                else if (type.IsGenericParameter)
                {
                    StringBuilder typeIdentityStringBuilder = new StringBuilder();
                    WriteTypeArgument(typeIdentityStringBuilder, false, type, formatGenericName);
                    typeIdentityStringBuilder.Remove(typeIdentityStringBuilder.Length - 1, 1);
                    typeIdentity = typeIdentityStringBuilder.ToString();
                }
                else
                {
                    StringBuilder typeIdentityStringBuilder = new StringBuilder();
                    WriteTypeWithNamespace(typeIdentityStringBuilder, type, formatGenericName);
                    typeIdentity = typeIdentityStringBuilder.ToString();
                }

                Assumes.IsTrue(!string.IsNullOrEmpty(typeIdentity));
                TypeIdentityCache.Add(type, typeIdentity);
            }

            return(typeIdentity);
        }
예제 #3
0
        public static string GetTypeIdentity(MethodInfo method)
        {
            Requires.NotNull(method, nameof(method));
            Contract.Ensures(!string.IsNullOrEmpty(Contract.Result <string>()));

            return(ContractNameServices.GetTypeIdentityFromMethod(method));
        }
예제 #4
0
        public static string GetTypeIdentity(Type type)
        {
            Requires.NotNull(type, nameof(type));
            Contract.Ensures(!string.IsNullOrEmpty(Contract.Result <string>()));

            return(ContractNameServices.GetTypeIdentity(type));
        }
예제 #5
0
        internal static string GetTypeIdentity(Type type, bool formatGenericName)
        {
            ArgumentNullException.ThrowIfNull(type);

            if (!TypeIdentityCache.TryGetValue(type, out string?typeIdentity))
            {
                if (!type.IsAbstract && type.HasBaseclassOf(typeof(Delegate)))
                {
                    MethodInfo method = type.GetMethod("Invoke") !;
                    typeIdentity = ContractNameServices.GetTypeIdentityFromMethod(method);
                }
                else if (type.IsGenericParameter)
                {
                    StringBuilder typeIdentityStringBuilder = new StringBuilder();
                    WriteTypeArgument(typeIdentityStringBuilder, false, type, formatGenericName);
                    typeIdentityStringBuilder.Remove(typeIdentityStringBuilder.Length - 1, 1);
                    typeIdentity = typeIdentityStringBuilder.ToString();
                }
                else
                {
                    StringBuilder typeIdentityStringBuilder = new StringBuilder();
                    WriteTypeWithNamespace(typeIdentityStringBuilder, type, formatGenericName);
                    typeIdentity = typeIdentityStringBuilder.ToString();
                }

                if (string.IsNullOrEmpty(typeIdentity))
                {
                    throw new Exception(SR.Diagnostic_InternalExceptionMessage);
                }
                TypeIdentityCache.Add(type, typeIdentity);
            }

            return(typeIdentity);
        }
        public void ContractNameServicesAddCustomModifiersTest()
        {
            Type[]        modifiers = new Type[] { typeof(int), typeof(List <int>), typeof(double) };
            StringBuilder typeName  = new StringBuilder();

            ContractNameServices.WriteCustomModifiers(typeName, "test", modifiers, false);
            Assert.Equal(
                string.Format(" {0}(System.Int32,System.Collections.Generic.List(System.Int32),System.Double)", "test"),
                typeName.ToString());
        }
예제 #7
0
        internal static string GetTypeIdentity(Type type)
        {
            Assumes.NotNull(type);
            string typeIdentity = null;

            if (!TypeIdentityCache.TryGetValue(type, out typeIdentity))
            {
                if (!type.IsAbstract && type.IsSubclassOf(typeof(Delegate)))
                {
                    MethodInfo method = type.GetMethod("Invoke");
                    typeIdentity = ContractNameServices.GetTypeIdentityFromMethod(method);
                }
                else
                {
                    typeIdentity = type.AssemblyQualifiedName;
                }

                TypeIdentityCache.Add(type, typeIdentity);
            }

            return(typeIdentity);
        }
        public static string GetTypeIdentity(MethodInfo method)
        {
            Requires.NotNull(method, nameof(method));

            return(ContractNameServices.GetTypeIdentityFromMethod(method));
        }
        public static string GetTypeIdentity(Type type)
        {
            Requires.NotNull(type, nameof(type));

            return(ContractNameServices.GetTypeIdentity(type));
        }