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