Table of Contents

Class MemberLookup

Namespace
ICSharpCode.Decompiler.CSharp.Resolver
Assembly
ICSharpCode.Decompiler.dll

Implementation of member lookup (C# 4.0 spec, §7.4).

public class MemberLookup
Inheritance
MemberLookup
Inherited Members

Constructors

MemberLookup(ITypeDefinition, IModule, bool)

public MemberLookup(ITypeDefinition currentTypeDefinition, IModule currentModule, bool isInEnumMemberInitializer = false)

Parameters

currentTypeDefinition ITypeDefinition
currentModule IModule
isInEnumMemberInitializer bool

Methods

GetAccessibleMembers(ResolveResult)

Retrieves all members that are accessible and not hidden (by being overridden or shadowed). Returns both members and nested type definitions. Does not include extension methods.

public IEnumerable<IEntity> GetAccessibleMembers(ResolveResult targetResolveResult)

Parameters

targetResolveResult ResolveResult

Returns

IEnumerable<IEntity>

IsAccessible(IEntity, bool)

Gets whether entity is accessible in the current class.

public bool IsAccessible(IEntity entity, bool allowProtectedAccess)

Parameters

entity IEntity

The entity to test

allowProtectedAccess bool

Whether protected access to instance members is allowed. True if the type of the reference is derived from the current class. Protected static members may be accessible even if false is passed for this parameter.

Returns

bool

IsInvocable(IMember)

Gets whether the member is considered to be invocable.

public static bool IsInvocable(IMember member)

Parameters

member IMember

Returns

bool

IsProtectedAccessAllowed(ResolveResult)

Gets whether access to protected instance members of the target expression is possible.

public bool IsProtectedAccessAllowed(ResolveResult targetResolveResult)

Parameters

targetResolveResult ResolveResult

Returns

bool

IsProtectedAccessAllowed(IType)

Gets whether access to protected instance members of the target type is possible.

public bool IsProtectedAccessAllowed(IType targetType)

Parameters

targetType IType

Returns

bool

Remarks

This method does not consider the special case of the 'base' reference. If possible, use the IsProtectedAccessAllowed(ResolveResult) overload instead.

Lookup(ResolveResult, string, IReadOnlyList<IType>, bool)

Performs a member lookup.

public ResolveResult Lookup(ResolveResult targetResolveResult, string name, IReadOnlyList<IType> typeArguments, bool isInvocation)

Parameters

targetResolveResult ResolveResult
name string
typeArguments IReadOnlyList<IType>
isInvocation bool

Returns

ResolveResult

LookupIndexers(ResolveResult)

Looks up the indexers on the target type.

public IReadOnlyList<MethodListWithDeclaringType> LookupIndexers(ResolveResult targetResolveResult)

Parameters

targetResolveResult ResolveResult

Returns

IReadOnlyList<MethodListWithDeclaringType>

LookupType(IType, string, IReadOnlyList<IType>, bool)

public ResolveResult LookupType(IType declaringType, string name, IReadOnlyList<IType> typeArguments, bool parameterizeResultType = true)

Parameters

declaringType IType
name string
typeArguments IReadOnlyList<IType>
parameterizeResultType bool

Returns

ResolveResult