11using System ;
2+ using System . Text ;
3+ using System . Text . RegularExpressions ;
24using dnlib . DotNet ;
35
46namespace Confuser . Core . Project . Patterns {
@@ -20,27 +22,44 @@ public override int ArgumentCount {
2022
2123 /// <inheritdoc />
2224 public override object Evaluate ( IDnlibDef definition ) {
23- object type = Arguments [ 0 ] . Evaluate ( definition ) ;
25+ string typeRegex = Arguments [ 0 ] . Evaluate ( definition ) . ToString ( ) ;
26+
27+ var memberType = new StringBuilder ( ) ;
2428
2529 if ( definition is TypeDef )
26- return StringComparer . OrdinalIgnoreCase . Compare ( type . ToString ( ) , "type" ) == 0 ;
30+ memberType . Append ( "type " ) ;
31+
32+ if ( definition is MethodDef ) {
33+ memberType . Append ( "method " ) ;
2734
28- if ( definition is MethodDef )
29- return StringComparer . OrdinalIgnoreCase . Compare ( type . ToString ( ) , "method" ) == 0 ;
35+ var method = ( MethodDef ) definition ;
36+ if ( method . IsGetter )
37+ memberType . Append ( "propertym getter " ) ;
38+ else if ( method . IsSetter )
39+ memberType . Append ( "propertym setter " ) ;
40+ else if ( method . IsAddOn )
41+ memberType . Append ( "eventm add " ) ;
42+ else if ( method . IsRemoveOn )
43+ memberType . Append ( "eventm remove " ) ;
44+ else if ( method . IsFire )
45+ memberType . Append ( "eventm fire " ) ;
46+ else if ( method . IsOther )
47+ memberType . Append ( "other " ) ;
48+ }
3049
3150 if ( definition is FieldDef )
32- return StringComparer . OrdinalIgnoreCase . Compare ( type . ToString ( ) , "field" ) == 0 ;
51+ memberType . Append ( "field " ) ;
3352
3453 if ( definition is PropertyDef )
35- return StringComparer . OrdinalIgnoreCase . Compare ( type . ToString ( ) , "property" ) == 0 ;
54+ memberType . Append ( "property " ) ;
3655
3756 if ( definition is EventDef )
38- return StringComparer . OrdinalIgnoreCase . Compare ( type . ToString ( ) , "event" ) == 0 ;
57+ memberType . Append ( "event " ) ;
3958
4059 if ( definition is ModuleDef )
41- return StringComparer . OrdinalIgnoreCase . Compare ( type . ToString ( ) , "module" ) == 0 ;
60+ memberType . Append ( "module " ) ;
4261
43- return false ;
62+ return Regex . IsMatch ( memberType . ToString ( ) , typeRegex ) ;
4463 }
4564 }
4665}
0 commit comments