Exemplo n.º 1
0
 public static IEnumerable <CustomAttributeData> GetTypeForwardedToAttributes(MetadataOnlyModule manifestModule, Token token)
 {
     if (token.TokenType != System.Reflection.Adds.TokenType.Assembly)
     {
         return(new CustomAttributeData[0]);
     }
     return(PseudoCustomAttributes.GetTypeForwardedToAttributes(manifestModule));
 }
Exemplo n.º 2
0
        public virtual IEnumerable <CustomAttributeData> GetPseudoCustomAttributes(MetadataOnlyModule module, Token token)
        {
            List <CustomAttributeData> customAttributeDatas = new List <CustomAttributeData>();

            customAttributeDatas.AddRange(PseudoCustomAttributes.GetTypeForwardedToAttributes(module, token));
            CustomAttributeData serializableAttribute = PseudoCustomAttributes.GetSerializableAttribute(module, token);

            if (serializableAttribute != null)
            {
                customAttributeDatas.Add(serializableAttribute);
            }
            return(customAttributeDatas);
        }
Exemplo n.º 3
0
        public virtual Type TryTypeForwardResolution(MetadataOnlyAssembly assembly, string fullname, bool ignoreCase)
        {
            Type type;

            using (IEnumerator <UnresolvedTypeName> enumerator = PseudoCustomAttributes.GetRawTypeForwardedToAttributes(assembly).GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    UnresolvedTypeName current = enumerator.Current;
                    if (!Utility.Compare(current.TypeName, fullname, ignoreCase))
                    {
                        continue;
                    }
                    type = current.ConvertToType(assembly.TypeUniverse, assembly.ManifestModuleInternal);
                    return(type);
                }
                return(null);
            }
            return(type);
        }
Exemplo n.º 4
0
        public static IEnumerable <CustomAttributeData> GetTypeForwardedToAttributes(MetadataOnlyModule manifestModule)
        {
            ITypeUniverse assemblyResolver = manifestModule.AssemblyResolver;
            Type          builtInType      = assemblyResolver.GetBuiltInType(System.Reflection.Adds.CorElementType.Type);
            Assembly      assembly         = assemblyResolver.GetSystemAssembly();
            Type          type             = assembly.GetType("System.Runtime.CompilerServices.TypeForwardedToAttribute", false, false);

            if (type != null)
            {
                foreach (UnresolvedTypeName rawTypeForwardedToAttribute in PseudoCustomAttributes.GetRawTypeForwardedToAttributes(manifestModule))
                {
                    ConstructorInfo[] constructorInfoArray = type.GetConstructors();
                    Type type1 = rawTypeForwardedToAttribute.ConvertToType(assemblyResolver, manifestModule);
                    List <CustomAttributeTypedArgument> customAttributeTypedArguments = new List <CustomAttributeTypedArgument>(1)
                    {
                        new CustomAttributeTypedArgument(builtInType, type1)
                    };
                    List <CustomAttributeNamedArgument> customAttributeNamedArguments = new List <CustomAttributeNamedArgument>(0);
                    yield return(new MetadataOnlyCustomAttributeData(constructorInfoArray[0], customAttributeTypedArguments, customAttributeNamedArguments));
                }
            }
        }
Exemplo n.º 5
0
 public static IEnumerable <CustomAttributeData> GetTypeForwardedToAttributes(MetadataOnlyAssembly assembly)
 {
     return(PseudoCustomAttributes.GetTypeForwardedToAttributes(assembly.ManifestModuleInternal));
 }
Exemplo n.º 6
0
 internal static IEnumerable <UnresolvedTypeName> GetRawTypeForwardedToAttributes(MetadataOnlyAssembly assembly)
 {
     return(PseudoCustomAttributes.GetRawTypeForwardedToAttributes(assembly.ManifestModuleInternal));
 }