public static bool Equals(ReflectionLookupKey key1, ReflectionLookupKey key2) { return(key1.HashCode == key2.HashCode //&& key1.LookupType == key2.LookupType && key1.Type == key2.Type && key1.BindingFlags == key2.BindingFlags && key1.MemberName == key2.MemberName); }
public static bool Equals(ReflectionLookupKey key, int lookupType, int hashCode, Type type, string memberName, BindingFlags bindingFlags) { return(key.HashCode == hashCode //&& key.LookupType == lookupType && key.Type == type && key.BindingFlags == bindingFlags && key.MemberName == memberName); }
public static PropertyInfo[] GetProperties(Type type, string name, BindingFlags flags) { var map = (ReflectionLookupHashMap)Cache.ReadMap; var retArray = (PropertyInfo[])map.Get(LookupTypeProperty, type, name, flags); if (retArray != null) { return(retArray); } // Try the ConcurrentMap again, with its special write handling var key = new ReflectionLookupKey(LookupTypeProperty, type, name, flags); retArray = (PropertyInfo[])Cache.Get(key); if (retArray != null) { return(retArray); } retArray = GetProperties(type, flags).Where(p => p.Name == name); Cache.Put(key, retArray); return(retArray); }