internal static CallSite <T> CreateCallSite <T>( Type specificBinderType, LazyBinder binder, MemberInvocationMoniker name, Type context, string[] argumentNames = null, bool staticContext = false, bool isEvent = false) where T : class { var hashCode = BinderHashGenerator <T> .Create(name, context, argumentNames, specificBinderType, staticContext, isEvent); lock (_binderCacheLock) { CallSite callSite; if (!_binderCache.TryGetValue(hashCode, out callSite)) { callSite = CallSite <T> .Create(binder()); _binderCache[hashCode] = callSite; } return((CallSite <T>)callSite); } }
internal static CallSite CreateCallSite( Type delegateType, Type specificBinderType, LazyBinder binder, MemberInvocationMoniker name, Type context, string[] argumentNames = null, bool staticContext = false, bool isEvent = false) { var hash = BinderHashGenerator.Create(delegateType, name, context, argumentNames, specificBinderType, staticContext, isEvent); lock (_binderCacheLock) { CallSite tOut; if (!_binderCache.TryGetValue(hash, out tOut)) { tOut = CallSite.Create(delegateType, binder()); _binderCache[hash] = tOut; } return(tOut); } }