【发布时间】:2012-08-28 12:07:23
【问题描述】:
在写我遇到的问题主题时 其他一些最相关的帖子...导致 MSDN http://msdn.microsoft.com/en-us/library/system.reflection.parameterinfo.aspx
但我无法提取我需要的代码
我刚刚学习了如何使用基于 st 和 sf 的辅助方法获取方法名称,如下所示:
public void setLogView(View ViewMode)
{
AAdToAppLog();
Lview_AH_AutomationLog.Sorting = SortOrder.Ascending;
ColumnHeader ColHeadRowNo = new ColumnHeader();
ColumnHeader ColHeadFunction = new ColumnHeader();
ColumnHeader ColHeadContent = new ColumnHeader();
ColumnHeader ColHeadTime = new ColumnHeader();
Lview_AH_AutomationLog.View = ViewMode;
Lview_AH_AutomationLog.Columns.Add(ColHeadRowNo);
Lview_AH_AutomationLog.Columns.Add(ColHeadFunction);
Lview_AH_AutomationLog.Columns.Add(ColHeadContent);
Lview_AH_AutomationLog.Columns.Add(ColHeadTime);
ColHeadRowNo.Text = "#";
ColHeadFunction.Text = "Function Name";
ColHeadContent.Text = "Content";
ColHeadTime.Text = "Time";
ColHeadRowNo.Width = 45;
ColHeadFunction.Width = 150;
ColHeadContent.Width = 150;
ColHeadTime.Width = 100;
}
public void AAdToAppLog(string FunctionOutPut = "N/A")
{
string t = DateTime.Now.ToString("mm:ss.ff");
string h = DateTime.Now.ToString("HH");
ListViewItem FirstCell= new ListViewItem();
FirstCell.Text =h+":" +pre0Tosingle_9(LogCounter.ToString());//Another helper puts 0 infront <=9 digits
Lview_AH_AutomationLog.Items.Insert(0, FirstCell);
StackTrace st = new StackTrace();
StackFrame sf = st.GetFrame(1);
string FunctionName = sf.GetMethod().ToString().Replace("Void", "").Replace("System.Windows.Forms.", "");
FirstCell.SubItems.Add(FunctionName);
FirstCell.SubItems.Add(FunctionOutPut);
FirstCell.SubItems.Add(t);
LogCounter++;
}
所以在我想要的每一种方法中,我都只是把
AddToAppLog()
该方法包含我对 AddToAppLog() 的调用,然后报告(通过 ListView)方法的名称,我只是添加了调用时间。
我想在这篇文章中解决两件事,关于我对该辅助方法的实现: 我从 sf.GetMethod 收到的“FunctionName”很好,它抛出了给定方法的参数类型,我喜欢这个想法,只是它包含 parameter.type 的父亲 + 祖父 + 曾祖父,但我只想底部类型:
System.Windows.Forms.View
这是最短的之一(:我试图通过玩 .Replace() 自己去 View 那么是否有另一种方法来剥离它,或者实际上是同一家族中的另一种方法以我上面提到的方式提取它,或者我可以使用包含所有可能最常用类型的列表并使用 stringReplace 进行 foreach?
更重要的是,我如何获得 Method(parameterName) 以及?
提前感谢!!
谁能显示一个易于理解的简单语法示例 获取参数名称?
【问题讨论】:
标签: c# debugging reflection helpermethods