For() public static method

public static For ( TypeReference typeReference ) : TypeResolver
typeReference TypeReference
return TypeResolver
Esempio n. 1
0
        private static void CollectImplementedInterfaces(TypeReference type, HashSet <TypeReference> results)
        {
            var typeResolver = TypeResolver.For(type);
            var typeDef      = type.Resolve();

            foreach (var implementedInterface in typeDef.Interfaces)
            {
                var interfaceType = typeResolver.Resolve(implementedInterface.InterfaceType);
                results.Add(interfaceType);
                CollectImplementedInterfaces(interfaceType, results);
            }
        }
Esempio n. 2
0
        private static void RedirectInterfaceMethods(TypeReference interfaceType, Collection <MethodDefinition> redirectedMethods)
        {
            var typeResolver = TypeResolver.For(interfaceType);
            var typeDef      = interfaceType.Resolve();

            foreach (var method in typeDef.Methods)
            {
                var redirectedMethod = new MethodDefinition(method.Name, MethodAttributes.Public | MethodAttributes.Virtual | MethodAttributes.Final | MethodAttributes.NewSlot, typeResolver.Resolve(method.ReturnType));
                redirectedMethod.ImplAttributes = MethodImplAttributes.Runtime;

                foreach (var parameter in method.Parameters)
                {
                    redirectedMethod.Parameters.Add(new ParameterDefinition(parameter.Name, parameter.Attributes, typeResolver.Resolve(parameter.ParameterType)));
                }

                redirectedMethod.Overrides.Add(typeResolver.Resolve(method));
                redirectedMethods.Add(redirectedMethod);
            }
        }