TryGetRuntimeType() 공개 메소드

public TryGetRuntimeType ( ) : Type
리턴 System.Type
예제 #1
0
        public static Type FindDelegateType(TypeDefinition returnType, TypeDefinition[] parameterTypes)
        {
            var typeName =
                "System." +
                (returnType.TryGetRuntimeType() == typeof(void) ? "Action" : "Func");

            if (returnType.TryGetRuntimeType() == typeof(void) && parameterTypes.Length > 0)
            {
                typeName += "`" + parameterTypes.Length.ToString("D", CultureInfo.InvariantCulture);
            }
            else
            {
                typeName += "`" + (parameterTypes.Length + 1).ToString("D", CultureInfo.InvariantCulture);
            }

            var type = Type.GetType(typeName, false);

            if (type == null)
            {
                // Try get from System.Core.dll
                type = typeof(Enumerable).GetAssembly().GetType(typeName);
            }

            return(type);
        }
		internal static TypeDefinition GetDelegateTypeDefinition( TypeDefinition returnType, TypeDefinition[] parameterTypes )
		{
			var typeDefinition = FindDelegateType( returnType, parameterTypes );
			return
				returnType.TryGetRuntimeType() == typeof( void )
					? parameterTypes.Length == 0
					? typeDefinition
					: TypeDefinition.GenericReferenceType( typeDefinition, parameterTypes )
					: TypeDefinition.GenericReferenceType( typeDefinition, parameterTypes.Concat( new[] { returnType } ).ToArray() );
		}
		internal static Type GetResolvedDelegateType( TypeDefinition returnType, TypeDefinition[] parameterTypes )
		{
			var typeDefinition = FindDelegateType( returnType, parameterTypes );
			return
				returnType.TryGetRuntimeType() == typeof( void )
					? parameterTypes.Length == 0
					? typeDefinition
					: typeDefinition.MakeGenericType( parameterTypes.Select( t => t.ResolveRuntimeType() ).ToArray() )
					: typeDefinition.MakeGenericType( parameterTypes.Select( t => t.ResolveRuntimeType() ).Concat( new[] { returnType.ResolveRuntimeType() } ).ToArray() );
		}
예제 #4
0
        internal static TypeDefinition GetDelegateTypeDefinition(TypeDefinition returnType, TypeDefinition[] parameterTypes)
        {
            var typeDefinition = FindDelegateType(returnType, parameterTypes);

            return
                (returnType.TryGetRuntimeType() == typeof(void)
                                        ? parameterTypes.Length == 0
                                        ? typeDefinition
                                        : TypeDefinition.GenericReferenceType(typeDefinition, parameterTypes)
                                        : TypeDefinition.GenericReferenceType(typeDefinition, parameterTypes.Concat(new[] { returnType }).ToArray()));
        }
예제 #5
0
        internal static Type GetResolvedDelegateType(TypeDefinition returnType, TypeDefinition[] parameterTypes)
        {
            var typeDefinition = FindDelegateType(returnType, parameterTypes);

            return
                (returnType.TryGetRuntimeType() == typeof(void)
                                        ? parameterTypes.Length == 0
                                        ? typeDefinition
                                        : typeDefinition.MakeGenericType(parameterTypes.Select(t => t.ResolveRuntimeType()).ToArray())
                                        : typeDefinition.MakeGenericType(parameterTypes.Select(t => t.ResolveRuntimeType()).Concat(new[] { returnType.ResolveRuntimeType() }).ToArray()));
        }
		public static Type FindDelegateType( TypeDefinition returnType, TypeDefinition[] parameterTypes )
		{
			var typeName =
				"System." +
				( returnType.TryGetRuntimeType() == typeof( void ) ? "Action" : "Func" );

			if ( returnType.TryGetRuntimeType() == typeof( void ) && parameterTypes.Length > 0 )
			{
				typeName += "`" + parameterTypes.Length.ToString( "D", CultureInfo.InvariantCulture );
			}
			else
			{
				typeName += "`" + ( parameterTypes.Length + 1 ).ToString( "D", CultureInfo.InvariantCulture );
			}

			var type = Type.GetType( typeName, false );
			if ( type == null )
			{
				// Try get from System.Core.dll
				type = typeof( Enumerable ).GetAssembly().GetType( typeName );
			}

			return type;
		}