Type CreateType(ModuleBuilder modBuilder, MetaMethodInfo mmi) { var mi = mmi.GetMethodInfo(); if (mi == null) { // Debug.LogWarning($"Skipping {mmi.niceName}, no longer exists."); return(null); } var className = mmi.className; // Debug.Log("Creating Class: " + className); var typeBuilder = modBuilder.DefineType(className, TypeAttributes.Public); var classCtorInfo = typeof(UniventGeneratedClassAttribute).GetConstructor(Type.EmptyTypes); var caBuilder = new CustomAttributeBuilder(classCtorInfo, new object[] { }); typeBuilder.SetCustomAttribute(caBuilder); if (mi.ReturnType == typeof(void)) { typeBuilder.AddInterfaceImplementation(typeof(IEncapsulatedAction)); CreateMethod(mi, typeBuilder); } else { var itype = typeof(IEncapsulatedFunction <>).MakeGenericType(mi.ReturnType); typeBuilder.AddInterfaceImplementation(itype); CreateFunction(mi, typeBuilder, itype); } return(typeBuilder.CreateType()); }
public string NiceName() { var mi = metaMethodInfo.GetMethodInfo(); if (mi == null) { return(""); } var sb = new System.Text.StringBuilder(); sb.Append(mi.DeclaringType.Name); sb.Append("."); sb.Append(mi.Name); sb.Append("("); var parameters = mi.GetParameters(); for (var i = 0; i < parameters.Length; i++) { var p = parameters[i]; // sb.Append(p.Name); // sb.Append(":"); var arg = arguments.Get(p.Name, p.ParameterType); if (arg == null) { arg = "None"; } sb.Append(arg.ToString()); if (i < parameters.Length - 1) { sb.Append(", "); } } sb.Append(")"); return(sb.ToString()); }