Exemplo n.º 1
0
        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());
        }
Exemplo n.º 2
0
        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());
        }