File tree Expand file tree Collapse file tree 1 file changed +13
-6
lines changed Expand file tree Collapse file tree 1 file changed +13
-6
lines changed Original file line number Diff line number Diff line change @@ -205,14 +205,21 @@ class CustomMemberInfoProvider : IMemberInfoProvider
205205{ 
206206    public  MemberInfo [ ]  GetInstanceMembers ( object  instance ,  string  memberName ) 
207207    { 
208-         if  ( memberName  ==  "MoveNextAsync" ) 
208+         // Handle special case for auto generated async enumerators or 
209+         // explicitly defined interface members using interface map. 
210+         // MoveNextAsync is not accessible through the instance's type 
211+         // and it is not public. 
212+         // https://github.com/dotnet/roslyn/issues/71406 
213+ 
214+         var  type  =  instance . GetType ( ) ; 
215+         var  interfaces  =  type . GetTypeInfo ( ) . GetInterfaces ( ) ; 
216+         var  list  =  new  List < MemberInfo > ( ) ; 
217+         foreach  ( var  itype  in  interfaces ) 
209218        { 
210-             // Handle special case for auto generated async enumerators. 
211-             // MoveNextAsync is not accessible through its name and it is not public. 
212-             // https://github.com/dotnet/roslyn/issues/71406 
213-             return  instance . GetType ( ) . GetMember ( "System.Collections.Generic.IAsyncEnumerator<System.Int32>.MoveNextAsync" ,  BindingFlags . NonPublic  |  BindingFlags . Instance ) ; 
219+             list . AddRange ( itype . GetMember ( memberName ,  BindingFlags . Public  |  BindingFlags . Instance ) ) ; 
214220        } 
215-         return  instance . GetType ( ) . GetMember ( memberName ,  BindingFlags . Public  |  BindingFlags . Instance ) ; 
221+         list . AddRange ( type . GetMember ( memberName ,  BindingFlags . Public  |  BindingFlags . Instance ) ) ; 
222+         return  list . ToArray ( ) ; 
216223    } 
217224
218225    public  MemberInfo [ ]  GetStaticMembers ( Type  type ,  string  memberName ) 
    
 
   
 
     
   
   
          
     
  
    
     
 
    
      
     
 
     
    You can’t perform that action at this time.
  
 
    
  
     
    
      
        
     
 
       
      
     
   
 
    
    
  
 
  
 
     
    
0 commit comments