目前我正在尝试以编程方式File.ReadAllText
C#(。cs)文件并将其转换为Type对象,以便我可以访问Type.GetMethods()
函数(以及其余函数)。这个.cs文件不在同一个项目中,这就是为什么我不能只在代码本身中调用该类。
唯一的问题是我找不到这样做的方法。我已经通过使用TypeDescriptor将String转换为Type对象来尝试以下内容,但它失败并出现错误。
代码:
string code = File.ReadAllText(PathToHomeControllerFile);
Type t = (Type)TypeDescriptor.GetConverter(typeof(String)).ConvertTo(code, typeof(Type));
string methods = string.Join(",", t.GetMethods().Select(p => p.Name));
Console.WriteLine(methods);
文件我正在尝试转换(HomeController.cs):
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace TestApplication.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
public ActionResult TestAction()
{
return View();
}
}
}
错误:
'StringConverter'无法将'System.String'转换为 '的System.Type'。
我如何实现目标?
答案 0 :(得分:0)
由于我正在使用VSIX Extensions,我可以简单地使用CodeModel.CodeElements,如原始帖子中的评论中所述。我找到了另一个家伙Stackoverflower的答案,这就是诀窍。