首页 > 解决方案 > 如何使用 Roslyn 在 C# 中忽略 Property Getter 和 Setter

问题描述

我通过获取 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))

我认为这会过滤掉吸气剂和二传手......

标签: c#.netpropertiesroslyn

解决方案


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

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

推荐阅读