public MethodInfo GetMethod(StableMethodMetadataToken stableMethodMetadataToken) { ArgumentUtility.CheckNotNull("stableMethodMetadataToken", stableMethodMetadataToken); MethodInfo correspondingMethod; _map.TryGetValue(stableMethodMetadataToken, out correspondingMethod); return(correspondingMethod); }
public bool Equals(StableMethodMetadataToken other) { if (ReferenceEquals(null, other)) { return(false); } return(other._token == _token); }
private Dictionary <StableMetadataToken, PropertyInfo> BuildSpecialMethodsToPropertyMap(Type startType) { const BindingFlags bindingFlags = BindingFlags.DeclaredOnly | BindingFlags.Instance | BindingFlags.Public; var specialMethodsToPropertiesMap = new Dictionary <StableMetadataToken, PropertyInfo> (); var declaredOnlyProperties = _firstKnownBaseType.CreateSequence(t => t.BaseType).SelectMany(t => t.GetProperties(bindingFlags)); foreach (var property in declaredOnlyProperties) { foreach (var getterSetter in property.GetAccessors(true)) { var stableMethodMetadataToken = new StableMethodMetadataToken(getterSetter); // Only store first (= nearest to proxiedType) property. if (!specialMethodsToPropertiesMap.ContainsKey(stableMethodMetadataToken)) { specialMethodsToPropertiesMap[stableMethodMetadataToken] = property; } } } return(specialMethodsToPropertiesMap); }