Ejemplo n.º 1
0
 public void RegisterMethodDesc(MethodDefinition methodDef, MethodDesc methodDesc)
 {
     _methodDescByMethodDef[methodDef] = methodDesc;
 }
Ejemplo n.º 2
0
        private MethodDesc[] CreateMethodSlotsFromTypeDef(TypeDefinition typeDef)
        {
            var methods = new List<MethodDefinition>();

            methods.AddRange(GetVirtualMethodDefsFromTypeDef(typeDef)); // virtual
            methods.AddRange(typeDef.Methods.Where(x => !x.IsVirtual && !x.IsStatic)); // non-virtual
            methods.AddRange(typeDef.Methods.Where(x => x.IsStatic)); // static

            return methods
                    .Select((x, i) =>
                    {
                        var methodDesc = _classLoader.LookupMethodDescFromMethodDef(x);
                        if (methodDesc == null)
                        {
                            methodDesc = new MethodDesc()
                            {
                                MdToken = x.MetadataToken,
                                Name = x.FullName,
                                Definition = x,
                                Slot = i
                            };
                            _classLoader.RegisterMethodDesc(x, methodDesc);
                        }
                        return methodDesc;
                    })
                    .ToArray();
        }