我正在尋找一種方法來使用Roslyn從文檔(c#類聲明)中提取接口。 從重新格式化的例子。使用羅斯林編程提取接口
MSBuildWorkspace workspace = MSBuildWorkspace.Create();
// Open the solution within the workspace.
Solution originalSolution = workspace.OpenSolutionAsync(project).Result;
// Declare a variable to store the intermediate solution snapshot at each step.
MSBuildWorkspace workspace = MSBuildWorkspace.Create();
Solution originalSolution = workspace.OpenSolutionAsync(project).Result;
Solution newSolution = originalSolution;
foreach (ProjectId projectId in originalSolution.ProjectIds)
{
// Look up the snapshot for the original project in the latest forked solution.
Project proj = newSolution.GetProject(projectId);
var comp = proj.GetCompilationAsync().Result;
///var bind = comp.
if (proj.Name.EndsWith("Core.DataLayer"))
{
foreach (DocumentId documentId in proj.DocumentIds)
{
Document document = newSolution.GetDocument(documentId);
if (IsRepositoryDocument(document))
{
//How to implement this?
var newinterface = GetInterfaceFromRespository(document);
}
}
}
}
我開始使用Roslyn團隊提供的示例「重新格式化解決方案」。然而,我無法找到一個公共API來從給定的類文件中提取接口。 當試圖在Roslyn源代碼中找到這個功能時,我只能找到內部類。我找到了roslyn源代碼的
「src \ Features \ Core \ Portable \ ExtractInterface」中的相關類,我可以將它們複製到我的項目中並讓它工作,但我寧願不要。
TLDR;是否有一個公共的API,我可以從C#中使用以編程方式從類中提取接口?
請注意,這是在「常規」C#項目中完成的,而不是在Visual Studio擴展或分析器中完成的。
您可能可以從MEF中按名稱提取「CodeRefactoringProvider」。 – SLaks
以前沒有用過MEf,這將如何實現? – Patrick