我有一个来自EnvDTE命名空间的CodeFunction对象。我想得到它的定义; e.g:
private void MenuItemCallback(object sender, EventArgs e)
{
MessageBox.Show("Try");
}
我想把第一行作为字符串。
到目前为止我一直在尝试,
1)尝试通过获取CodeFunction的Type(返回类型)和参数然后在循环中将它们添加到字符串来创建一个字符串。但是,参数类型的名称变得像“System.UInt32”等,这是我不想要的。这也是一个问题,它可能不会完全ref Guid pguidCmdGroup
。我害怕跳过参考。
2)我尝试使用CodeFunction的功能,但我能得到的只是它的简单名称。
3)我试图从CodeFunction的起点和终点写,但是找不到将两个TextPoint转换成字符串的方法,因为我意识到结束点不是定义的结尾而是它自己的函数我不想。
如何才能简单地private void MenuItemCallback(object sender, EventArgs e)
或MenuItemCallback(object sender, EventArgs e)
?
感谢您的帮助。
答案 0 :(得分:0)
您必须使用 GetStartPoint()和 GetEndPoint():
阅读该功能的完整来源,然后切断
第一个打开大括号之前的代码。
// Retrieve the source code for the function.
TextPoint start = codeFunction.GetStartPoint(vsCMPart.vsCMPartHeader);
TextPoint finish = codeFunction.GetEndPoint();
string fullSource = start.CreateEditPoint().GetText(finish);
// Find the first open curly brace
int openCurlyBracePos = fullSource.IndexOf('{');
string declaration = String.Empty;
if (openCurlyBracePos > -1) {
declaration = fullSource.Substring(0, openCurlyBracePos).Trim();
}