internal static DynamicMemberHandle GetCachedProperty(Type objectType, string propertyName) { var key = new MethodCacheKey(objectType, propertyName, new Type[] { typeof(object) }); DynamicMemberHandle mh = null; if (!_memberCache.TryGetValue(key, out mh)) { lock (_memberCache) { if (!_memberCache.TryGetValue(key, out mh)) { PropertyInfo info = objectType.GetProperty(propertyName, propertyFlags); if (info == null) { throw new InvalidOperationException( string.Format("Member not found on object ({0})", propertyName)); } mh = new DynamicMemberHandle(info); _memberCache.Add(key, mh); } } } return(mh); }
internal static DynamicMemberHandle GetCachedField(Type objectType, string fieldName) { var key = new MethodCacheKey(objectType, fieldName, new Type[] { typeof(object) }); DynamicMemberHandle mh = null; if (!_memberCache.TryGetValue(key, out mh)) { lock (_memberCache) { if (!_memberCache.TryGetValue(key, out mh)) { FieldInfo info = objectType.GetField(fieldName, fieldFlags); if (info == null) { throw new InvalidOperationException( string.Format("Resources.MemberNotFoundException:{0}", fieldName)); } mh = new DynamicMemberHandle(info); _memberCache.Add(key, mh); } } } return(mh); }
internal static DynamicMemberHandle GetCachedProperty(Type objectType, string propertyName) { var key = new MethodCacheKey(objectType, propertyName, new Type[] { typeof(object) }); DynamicMemberHandle mh = null; if (!_memberCache.TryGetValue(key, out mh)) { lock (_memberCache) { if (!_memberCache.TryGetValue(key, out mh)) { PropertyInfo info = objectType.GetProperty(propertyName, propertyFlags); if (info == null) throw new InvalidOperationException( string.Format("Member not found on object ({0})", propertyName)); mh = new DynamicMemberHandle(info); _memberCache.Add(key, mh); } } } return mh; }
internal static DynamicMemberHandle GetCachedField(Type objectType, string fieldName) { var key = new MethodCacheKey(objectType, fieldName, new Type[] { typeof(object) }); DynamicMemberHandle mh = null; if (!_memberCache.TryGetValue(key, out mh)) { lock (_memberCache) { if (!_memberCache.TryGetValue(key, out mh)) { FieldInfo info = objectType.GetField(fieldName, fieldFlags); if (info == null) throw new InvalidOperationException( string.Format("Resources.MemberNotFoundException:{0}", fieldName)); mh = new DynamicMemberHandle(info); _memberCache.Add(key, mh); } } } return mh; }