Ejemplo n.º 1
0
            public MethodRepresentation(MethodInfo methodInfo, string unitysTargetType)
            {
                typeThatWeAreForwardingTo = unitysTargetType;

                var parameters = new List <ParamWrapped>();
                var sb         = new StringBuilder("name:" + methodInfo.Name + " returns:" + methodInfo.ReturnType);

                ParameterInfo[] myParameters = methodInfo.GetParameters();
                sb.Append(" (");

                for (int i = 0; i < myParameters.Length; i++)
                {
                    ParameterInfo paramInfo = myParameters[i];
                    var           toAdd     = new ParamWrapped
                    {
                        defaultValue = paramInfo.DefaultValue.ToString(),
                        isOptional   = paramInfo.IsOptional,
                        name         = paramInfo.Name,
                        type         = paramInfo.ParameterType,
                        isParams     = paramInfo.GetCustomAttributes(typeof(ParamArrayAttribute), false).Length > 0,
                        //http://stackoverflow.com/questions/627656/determining-if-a-parameter-uses-params-using-reflection-in-c
                        isRef = paramInfo.ParameterType.IsByRef,
                    };

                    parameters.Add(toAdd);
                }
                functionString = createRealParamString(methodInfo.Name, methodInfo.ReturnType, parameters.ToArray(),
                                                       obsoleteString(methodInfo));
            }
Ejemplo n.º 2
0
            private string createRealParamString(string methodName, Type returnType, ParamWrapped[] parameters, string attributes)
            {
                var paramBuilder = new StringBuilder();
                var valuesToPassToRealFunction = new StringBuilder();

                for (int i = 0; i < parameters.Length; i++)
                {
                    ParamWrapped paramInfo             = parameters[i];
                    string       specialModifierString = "";
                    if (paramInfo.isRef)
                    {
                        specialModifierString = "ref";
                    }
                    if (paramInfo.isParams)
                    {
                        specialModifierString = "params";
                    }
                    paramBuilder.Append(string.Format("{0} {1} {2}", specialModifierString, cleanType(paramInfo.type), paramInfo.name));

                    valuesToPassToRealFunction.Append(paramInfo.isRef ? "ref " + paramInfo.name : paramInfo.name);

                    if (paramInfo.isOptional)
                    {
                        paramBuilder.Append(string.Format("={0}", paramInfo.defaultValue));
                        //how are strings handled in this?  "" vs just a blank
                    }
                    if (i != parameters.Length - 1)
                    {
                        valuesToPassToRealFunction.Append(",");
                        paramBuilder.Append(",");
                    }
                }
                string optionallyReturnTheValue = returnType == typeof(void) ? "" : "return ";
                string functionFormatted        = string.Format("{6}public static {0} {1}({2})\n{{\n {4} {5}.{1}({3});\n}}\n",
                                                                cleanType(returnType), methodName, paramBuilder, valuesToPassToRealFunction, optionallyReturnTheValue,
                                                                typeThatWeAreForwardingTo, attributes);

                return(functionFormatted);
            }
            private string createRealParamString(string methodName, Type returnType, ParamWrapped[] parameters, string attributes)
            {
                var paramBuilder = new StringBuilder();
                var valuesToPassToRealFunction = new StringBuilder();
                for(int i = 0; i < parameters.Length; i++)
                {
                    ParamWrapped paramInfo = parameters[i];
                    string specialModifierString = "";
                    if(paramInfo.isRef)
                        specialModifierString = "ref";
                    if(paramInfo.isParams)
                        specialModifierString = "params";
                    paramBuilder.Append(string.Format("{0} {1} {2}", specialModifierString, cleanType(paramInfo.type), paramInfo.name));

                    valuesToPassToRealFunction.Append(paramInfo.isRef ? "ref " + paramInfo.name : paramInfo.name);

                    if(paramInfo.isOptional)
                    {
                        paramBuilder.Append(string.Format("={0}", paramInfo.defaultValue));
                        //how are strings handled in this?  "" vs just a blank
                    }
                    if(i != parameters.Length - 1)
                    {
                        valuesToPassToRealFunction.Append(",");
                        paramBuilder.Append(",");
                    }
                }
                string optionallyReturnTheValue = returnType == typeof(void) ? "" : "return ";
                string functionFormatted = string.Format("{6}public static {0} {1}({2})\n{{\n {4} {5}.{1}({3});\n}}\n",
                    cleanType(returnType), methodName, paramBuilder, valuesToPassToRealFunction, optionallyReturnTheValue,
                    typeThatWeAreForwardingTo, attributes);
                return functionFormatted;
            }
            public MethodRepresentation(MethodInfo methodInfo, string unitysTargetType)
            {
                typeThatWeAreForwardingTo = unitysTargetType;

                var parameters = new List<ParamWrapped>();
                var sb = new StringBuilder("name:" + methodInfo.Name + " returns:" + methodInfo.ReturnType);
                ParameterInfo[] myParameters = methodInfo.GetParameters();
                sb.Append(" (");

                for(int i = 0; i < myParameters.Length; i++)
                {
                    ParameterInfo paramInfo = myParameters[i];
                    var toAdd = new ParamWrapped
                    {
                        defaultValue = paramInfo.DefaultValue.ToString(),
                        isOptional = paramInfo.IsOptional,
                        name = paramInfo.Name,
                        type = paramInfo.ParameterType,
                        isParams = paramInfo.GetCustomAttributes(typeof(ParamArrayAttribute), false).Length > 0,
                        //http://stackoverflow.com/questions/627656/determining-if-a-parameter-uses-params-using-reflection-in-c
                        isRef = paramInfo.ParameterType.IsByRef,
                    };

                    parameters.Add(toAdd);
                }
                functionString = createRealParamString(methodInfo.Name, methodInfo.ReturnType, parameters.ToArray(),
                    obsoleteString(methodInfo));
            }