Exemple #1
0
 public void Setup(MyMethodInfo methodInfo, MyParameterInfo[] myParamaters, object classObject, WorldSpaceUI UI, Node classNode)
 {
     this.MyMethodInfo = methodInfo;
     this.MyParamaters = myParamaters;
     this.Object       = classObject;
     this.UI           = UI;
     this.ID           = methodInfo.ID;
     this.type         = methodInfo.Info.ReturnType;
     this.ClassNode    = classNode;
 }
Exemple #2
0
        public static MemberReferenceCollection GetTypeMembers(TypeDefinition typeDefinition)
        {
            var members = new MemberReferenceCollection(typeDefinition.Module);

            foreach (MemberReference member in typeDefinition.Constructors)
            {
                members.Add(member);
            }

            foreach (MemberReference member in typeDefinition.Events)
            {
                members.Add(member);
            }

            foreach (MemberReference member in typeDefinition.Fields)
            {
                members.Add(member);
            }

            foreach (MemberReference member in typeDefinition.Methods)
            {
                if (member is MethodDefinition)
                {
                    var methodDefinition = (MethodDefinition)member;

                    if (methodDefinition.IsSpecialName &&
                        !MyMethodInfo.IsMethodNameMapped(methodDefinition.Name))
                    {
                        continue;
                    }
                }

                members.Add(member);
            }

            foreach (MemberReference member in typeDefinition.Properties)
            {
                members.Add(member);
            }

            foreach (MemberReference member in typeDefinition.NestedTypes)
            {
                members.Add(member);
            }

            return(members);
        }
Exemple #3
0
        private void ConnectDecodedMethods(Assembly assembly)
        {
            foreach (var bridgeProcessorType in assembly.GetTypes().Where(x => typeof(BridgeCpu).IsAssignableFrom(x)))
            {
                object instance = null;

                foreach (var methodInfo in bridgeProcessorType.GetMethods(BindingFlags.Instance | BindingFlags.Public))
                {
                    var attribute = methodInfo.GetCustomAttribute <MethodInfoAttribute>();
                    if (attribute == null)
                    {
                        continue;
                    }

                    var mi = MethodInfoCollection.GetByIdOrNull(attribute.Id);
                    if (mi == null)
                    {
                        continue;
                    }

                    if (instance == null)
                    {
                        instance = Activator.CreateInstance(bridgeProcessorType, Implementation);
                        foreach (var pi in bridgeProcessorType.GetProperties(BindingFlags.Instance | BindingFlags.Public).Where(x => x.PropertyType == typeof(RawProgramMain)))
                        {
                            pi.SetValue(instance, this);
                        }
                    }

                    var fi = new MyMethodInfo();
                    fi.MethodInfo = mi;
                    fi.Action     = (Action)methodInfo.CreateDelegate(typeof(Action), instance);

                    MethodsByAddress.Add(mi.Address, fi);
                }
            }
        }