private string GetMethodInformation(MethodInfo method) { string result = "\"" + this.owner.Name + "." + method.Name + " "; // Parameter-Liste der Methode bestimmen string infoAttribute = GameConsoleTools.GetGameConsoleInfoAttribute( Attribute.GetCustomAttributes(method)); result += GameConsoleTools.GetParameterTypesString(method.GetParameters()); return(result + "\" : <" + GameConsoleTools.GetParameterTypeString(method.ReturnType) + "> (" + infoAttribute + ")"); }
private string GetPropertyInformation() { Type type = this.owner.SenderType; // PropertyInfo holen PropertyInfo prop = type.GetProperty(propertyName); // Get-Set-Methode holen MethodInfo method = prop.GetGetMethod(); string result = ""; if (method != null) { result += "\"" + this.owner.Name + "." + this.propertyName + "\" : <" + GameConsoleTools.GetParameterTypeString(method.ReturnType) + ">" + GameConsoleTools.GetGameConsoleInfoAttribute(prop); } method = prop.GetSetMethod(); if (method != null) { if (!string.IsNullOrEmpty(result)) { result += "\n"; } result += "\"" + this.owner.Name + "." + this.propertyName + " "; // Parameter-Liste der Methode bestimmen ParameterInfo[] methodParams = method.GetParameters(); result += GameConsoleTools.GetParameterTypesString(methodParams); /* * for (int i = 0; i < methodParams.Length; i++) * { * result += "<" + methodParams[i].ParameterType.ToString() + ">"; * if (i < methodParams.Length - 1) * result += " "; * } */ result += "\" <" + method.ReturnType.ToString() + ">" + GameConsoleTools.GetGameConsoleInfoAttribute(Attribute.GetCustomAttributes(prop)); } return(result); }
private bool TryMethod(MethodInfo method, string[] parameters, out string result) { result = ""; if (method == null) { return(false); } // Parameter-Liste der Methode bestimmen ParameterInfo[] methodParams = method.GetParameters(); if (methodParams.Length != parameters.Length) { return(false); } List <object> parameterList = new List <object>(); for (int i = 0; i < methodParams.Length; i++) { object param = GameConsoleTools.ParseString( methodParams[i].ParameterType, parameters[i], this.owner.Owner.TypeConverterCollection); if (param == null) { return(false); } parameterList.Add(param); } Type senderType = this.owner.SenderType; object objectResult = senderType.InvokeMember(this.functionName, BindingFlags.InvokeMethod, null, this.owner.Sender, parameterList.ToArray()); if (objectResult != null) { result = objectResult.ToString(); } return(true); }
private string Set(string value) { // Typ der Klasse bestimmen, der die Property gehört Type type = this.owner.SenderType; // PropertyInfo holen PropertyInfo prop = type.GetProperty(propertyName); // Get-Set-Methode holen MethodInfo method = prop.GetSetMethod(); if (method == null) { return("ERROR: Property is read-only."); } // Parameter-Liste der Methode bestimmen ParameterInfo[] methodParams = method.GetParameters(); if (methodParams.Length < 1) { return("ERROR: Invalid property parameters."); } List <object> parameterList = new List <object>(); object parameter = GameConsoleTools.ParseString( methodParams[0].ParameterType, value, this.owner.Owner.TypeConverterCollection); if (parameter == null) { return("ERROR: Could not parse set-value."); } parameterList.Add(parameter); type.InvokeMember( propertyName, BindingFlags.SetProperty, null, this.owner.Sender, parameterList.ToArray()); return(this.Get()); }