【发布时间】:2015-12-08 22:11:34
【问题描述】:
作为 Roslyn 代码修复的一部分,我需要在一个类上实现一个接口,如果该类尚未实现它。
到目前为止,我能够检测到该类是否实现了接口:
var implements = false;
foreach (var b in t.BaseList.Types)
{
var name = (b.Type as IdentifierNameSyntax)?.Identifier.ValueText;
if (name == "IInterfaceName")
{
implements = true;
break;
}
}
现在,如果implements 为假,我需要将接口添加到基类型列表中。
我试过t.BaseTypes.Add(...),在这里我有点卡住了——不知道如何构造正确的参数。
这是正确的方法吗?
【问题讨论】:
-
您可以使用 Linq 将其写为
bool implements = t.BaseList.Types.Select(b => b.Type).OfType<IdentifierNameSyntax>().Any(t => t.Identifier.ValueText == "IInterfaceName");