protected ObjectMemberCache InitializeObjectCache(object input) { var res = new ObjectMemberCache(input); ObjectSplitCache.Cache.Add(input, res); return(res); }
public static ObjectCallerBase Ctor(Type type) { if (SlimDeterminer.Check(type, out var createFromSlimService)) { return(createFromSlimService); } var callerType = typeof(CompatibleObjectCaller <>).MakeGenericType(type); var accessor = type.CreateTypeAccessor(true); if (!ObjectMemberCache.TryTouch(type, out var members)) { members = type.GetObjectMembers(); ObjectMemberCache.Cache(type, members); } var @params = new object[] { accessor, members }; return(TypeVisit.CreateInstance <ObjectCallerBase>(callerType, @params)); }
protected MemberValueCache InitializeCachedValue(MemberInfo member, ObjectMemberCache memberCache) { var res = memberCache.AddMember(member); return(res); }