我要做的是:
我正在使用roslyn编写代码重构。我的目标是开辟出一种优势。所以我正在做的基本上是删除所有私人工作人员并用throw new NotImplementedException()
替换非私人工作人员的身体。
我的问题是什么:
一切正常,但我最终得到了很多代码重复:
private static bool IsPrivate(TypeDeclarationSyntax type)
{
return type.Modifiers.Any(IsPrivateModifier);
}
private static bool IsPrivate(MethodDeclarationSyntax method)
{
return method.Modifiers.Any(IsPrivateModifier);
}
private static bool IsPrivate(FieldDeclarationSyntax field)
{
return field.Modifiers.Any(IsPrivateModifier);
}
private static bool IsPrivate(PropertyDeclarationSyntax property)
{
return property.Modifiers.Any(IsPrivateModifier);
}
private static bool IsPrivate(IndexerDeclarationSyntax property)
{
return property.Modifiers.Any(IsPrivateModifier);
}
private static bool IsPrivateModifier(SyntaxToken modifier)
{
return modifier.Kind() == SyntaxKind.PrivateKeyword;
}
原因是我需要使用属性Members
,并且没有公共基类型或接口用于声明Members
的语法类。我对属性Body
存在同样的问题,这是所有这些共同的问题,没有共同的基础或公共接口。
问题: 有没有理由为什么API设计是这样的,或者我错过了什么?是否有任何模式可以避免在这些和许多其他类似案例中出现重复。
更新 在roslyn repo中创建了一个问题:#10455
答案 0 :(得分:0)
我希望他们能解决这个问题,但你可以
dynamic
现在就在它周围。