Ejemplo n.º 1
0
        public MethodInfo(System.Reflection.MethodInfo mi)
        {
            name = mi.Name;

            // get acces modifires
            modificators = GetModificators(mi.GetType()) + mi.ToString();
            if (mi.IsAbstract && !mi.DeclaringType.IsInterface)
            {
                modificators += "abstract ";
            }
            if (mi.GetCustomAttribute(typeof(AsyncStateMachineAttribute)) != null)
            {
                modificators += "async ";
            }
            if ((mi.MethodImplementationFlags & MethodImplAttributes.InternalCall) != 0)
            {
                modificators += "extern ";
            }
            if (!mi.Equals(mi.GetBaseDefinition()))
            {
                modificators += "overriden ";
            }
            if (mi.IsVirtual && mi.IsFinal)
            {
                modificators += "sealed ";
            }
            if (mi.IsStatic)
            {
                modificators += "static ";
            }
            if (mi.IsVirtual && !mi.IsFinal && mi.Equals(mi.GetBaseDefinition()) && !mi.DeclaringType.IsInterface)
            {
                modificators += "virtual ";
            }
        }
        MethodReference ImportGenericInstanceMethod(SR.MethodInfo mi, ImportContext context)
        {
            SR.MethodInfo         gmd = (SR.MethodInfo)mi.GetType().GetMethod("GetGenericMethodDefinition").Invoke(mi, null);
            GenericInstanceMethod gim = new GenericInstanceMethod(
                ImportMethodBase(gmd, gmd.ReturnType, context));

            foreach (Type genArg in GetGenericArguments(mi))
            {
                gim.GenericArguments.Add(ImportSystemType(genArg, context));
            }

            return(gim);
        }
Ejemplo n.º 3
0
        internal override MethodInfo GetMethod(MethodInfo fromNoninstanciated)
        {
            initialize();

            if (!(fromNoninstanciated is MethodBuilder))
            {
                throw new InvalidOperationException("Inflating non MethodBuilder objects is not supported: " + fromNoninstanciated.GetType());
            }

            MethodBuilder mb = (MethodBuilder)fromNoninstanciated;

            if (methods == null)
            {
                methods = new Hashtable();
            }
            if (!methods.ContainsKey(mb))
            {
                methods [mb] = new MethodOnTypeBuilderInst(this, mb);
            }
            return((MethodInfo)methods [mb]);
        }
 static int GetMetadataToken(SR.MethodInfo mi)
 {
     return((int)mi.GetType().GetProperty("MetadataToken").GetValue(mi, null));
 }
 static Type [] GetGenericArguments(SR.MethodInfo mi)
 {
     return((Type [])mi.GetType().GetMethod("GetGenericArguments").Invoke(mi, null));
 }
Ejemplo n.º 6
0
 public static ILGenerator GetIlGenerator(MethodInfo m)
 {
     DynamicMethod dm;
     MethodBuilder mb;
     if ((dm = m as DynamicMethod) != null)
         return dm.GetILGenerator();
     if ((mb = m as MethodBuilder) != null)
         return mb.GetILGenerator();
     throw new PrexoniteException
         (
         "CIL Implementation " + m.Name +
             " is neither a dynamic method nor a method builder but a " +
                 m.GetType());
 }
Ejemplo n.º 7
0
		internal override MethodInfo GetMethod (MethodInfo fromNoninstanciated)
		{
			initialize ();

			if (!(fromNoninstanciated is MethodBuilder))
				throw new InvalidOperationException ("Inflating non MethodBuilder objects is not supported: " + fromNoninstanciated.GetType ());
	
			MethodBuilder mb = (MethodBuilder)fromNoninstanciated;
			if (methods == null)
				methods = new Hashtable ();
			if (!methods.ContainsKey (mb))
				methods [mb] = new MethodOnTypeBuilderInst (this, mb);
			return (MethodInfo)methods [mb];
		}