/// <summary> /// Returns dynamic indexer if one exists. /// </summary> /// <param name="indexer">Indexer to look up.</param> /// <param name="createCallback">callback function that will be called to create the dynamic indexer</param> /// <returns>An <see cref="IDynamicIndexer"/> for the given indexer.</returns> internal static IDynamicIndexer GetDynamicIndexer(PropertyInfo indexer, CreateIndexerCallback createCallback) { lock (indexerCacheLock) { IDynamicIndexer dynamicIndexer; if (!indexerCache.TryGetValue(indexer, out dynamicIndexer)) { dynamicIndexer = createCallback(indexer); indexerCache[indexer] = dynamicIndexer; } return(dynamicIndexer); } }
/// <summary> /// Returns dynamic indexer if one exists. /// </summary> /// <param name="indexer">Indexer to look up.</param> /// <param name="createCallback">callback function that will be called to create the dynamic indexer</param> /// <returns>An <see cref="IDynamicIndexer"/> for the given indexer.</returns> internal static IDynamicIndexer GetDynamicIndexer(PropertyInfo indexer, CreateIndexerCallback createCallback) { lock (indexerCache.SyncRoot) { IDynamicIndexer dynamicIndexer = (IDynamicIndexer)indexerCache[indexer]; if (dynamicIndexer == null) { dynamicIndexer = createCallback(indexer); indexerCache[indexer] = dynamicIndexer; } return(dynamicIndexer); } }
/// <summary> /// Returns dynamic indexer if one exists. /// </summary> /// <param name="indexer">Indexer to look up.</param> /// <param name="createCallback">callback function that will be called to create the dynamic indexer</param> /// <returns>An <see cref="IDynamicIndexer"/> for the given indexer.</returns> internal static IDynamicIndexer GetDynamicIndexer(PropertyInfo indexer, CreateIndexerCallback createCallback) { lock (indexerCache.SyncRoot) { IDynamicIndexer dynamicIndexer = (IDynamicIndexer)indexerCache[indexer]; if (dynamicIndexer == null) { dynamicIndexer = createCallback(indexer); indexerCache[indexer] = dynamicIndexer; } return dynamicIndexer; } }
/// <summary> /// Returns dynamic indexer if one exists. /// </summary> /// <param name="indexer">Indexer to look up.</param> /// <param name="createCallback">callback function that will be called to create the dynamic indexer</param> /// <returns>An <see cref="IDynamicIndexer" /> for the given indexer.</returns> internal static IDynamicIndexer GetDynamicIndexer(PropertyInfo indexer, CreateIndexerCallback createCallback) { lock (_indexerCacheLock) { IDynamicIndexer dynamicIndexer; if (!_indexerCache.TryGetValue(indexer, out dynamicIndexer)) { dynamicIndexer = createCallback(indexer); _indexerCache[indexer] = dynamicIndexer; } return dynamicIndexer; } }