获取某个类中所有方法并格式化输出

Get method list

public List<MethodInfo> StretchAllMethodsThroughClassName(Type classType)
{
List<MethodInfo> allMethodsList = new List<MethodInfo>();

var allMethods = classType.GetMethods().ToList();
foreach (MethodInfo method in allMethods)
{
StringBuilder methodHeader = new StringBuilder();
methodHeader.Append(String.Format("Public {0} {1}(", method.ReturnType.Name, method.Name));
foreach (var parameter in method.GetParameters())
{
methodHeader.Append(parameter.ParameterType.FullName.ToString() + " " + parameter.Name + ",");
}
string method2 = methodHeader.Remove(methodHeader.Length - 1, 1).ToString() + ")";
}
allMethodsList=allMethods;
return allMethodsList;
}

Generate XML file

public void GenerateXMLFile(string xmlFilePath, List<MethodInfo> methodList)
{
try
{
//初始化一个xml实例
XmlDocument myXmlDoc = new XmlDocument();
//创建xml的根节点
XmlElement rootElement = myXmlDoc.CreateElement("Methods");
//将根节点加入到xml文件中(AppendChild)
myXmlDoc.AppendChild(rootElement);
foreach (MethodInfo method in methodList)
{

//初始化第一层的子节点
XmlElement firstLevelElement1 = myXmlDoc.CreateElement("Method");
//填充第一层的子节点的属性值(SetAttribute)
firstLevelElement1.SetAttribute(@"ReturnType", method.ReturnType.Name);
firstLevelElement1.SetAttribute(@"Name", method.Name);
//将第一层的第一个子节点加入到根节点下
rootElement.AppendChild(firstLevelElement1);
foreach (var parameter in method.GetParameters())
{
//初始化第二层子节点
XmlElement secondLevelElement11 = myXmlDoc.CreateElement(@"Parameter");
//填充第二层子节点的属性值(SetAttribute)
secondLevelElement11.SetAttribute("Type", parameter.ParameterType.FullName.ToString());
//填充第二层子节点的值(InnerText)
secondLevelElement11.InnerText = parameter.Name.ToString();
//将第二层的子节点加入到第一层子节点下
firstLevelElement1.AppendChild(secondLevelElement11);

}
//将xml文件保存到指定的路径下
myXmlDoc.Save(xmlFilePath);
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}

原文地址:https://www.cnblogs.com/Lihao2013/p/3621398.html