gpt4 book ai didi

c# - Roslyn TypeDeclarationSyntax、MethodDeclarationSyntax、FieldDeclarationSyntax 具有公共(public)属性但没有公共(public)基类或接口(interface)

转载 作者:行者123 更新时间:2023-11-30 12:57:08 40 4
gpt4 key购买 nike

我正在尝试做的事情:

我正在使用 roslyn 编写代码重构。我的目标是创造一个类(class)。所以我所做的基本上是删除所有私有(private)员工,并用 throw new NotImplementedException() 替换非私有(private)员工的 body 。

我的问题是什么:

一切正常,但我最终遇到了很多这样的代码重复:

    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,并且语法类没有通用的基类型或接口(interface)来声明Members。我对属性 Body 有同样的问题,这对所有这些都是通用的,但没有通用的基础或通用接口(interface)。

问题:API设计是这样的,还是我遗漏了什么?在这些和许多其他类似情况下,有什么模式可以避免重复。


更新在 roslyn 存储库中创建了一个问题:#10455

最佳答案

我希望他们能解决这个问题,但你可以

dynamic 

暂时围绕它。

关于c# - Roslyn TypeDeclarationSyntax、MethodDeclarationSyntax、FieldDeclarationSyntax 具有公共(public)属性但没有公共(public)基类或接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36496009/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com