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; }
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); }
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); } } }