【问题标题】:How to ignore Property Getter and Setter in C# with Roslyn如何使用 Roslyn 在 C# 中忽略 Property Getter 和 Setter
【发布时间】:2019-04-11 13:24:34
【问题描述】:

我通过获取 GetMembers() 并使用 Linq 过滤来枚举 IMethodSymbols。唯一我无法过滤掉的是属性 getter 和 setter 方法 - 有什么建议吗?

对于每个属性,我还获得一个 get_[PropertyName] 和 set_[PropertyName] 方法。

TypeSymbol.GetMembers().Where(s => 
s.Kind == SymbolKind.Method && 
s.DeclaredAccessibility == Accessibility.Public && 
!s.IsImplicitlyDeclared && 
!s.IsVirtual))

我认为这会过滤掉 getter 和 setter...

【问题讨论】:

    标签: c# .net properties roslyn


    【解决方案1】:

    您需要将符号转换为IMethodSymbol,然后您可以使用MethodKind

    member is IMethodSymbol method &&
    (method.MethodKind == MethodKind.PropertyGet || method.MethodKind == MethodKind.PropertySet)
    

    【讨论】:

      【解决方案2】:

      我现在正在使用类似的字符串过滤器

      
      .Name.StartsWith("get_")
      
      

      但我希望有更好的解决方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-01-09
        • 1970-01-01
        • 1970-01-01
        • 2020-07-01
        • 2013-07-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多