public IDataProvider GetProvider(Type type) { if (TypeProviders.TryGetValue(type, out var result)) { return(result); } var factory = GetProviderFactory(type); if (factory != null) { lock (TypeProviders) return(TypeProviders[type] = factory.GetProvider(type)); } if (type.IsInterface) { return(new InterfaceDataProvider(type)); } else { throw new InvalidOperationException("There is no registered 'data provider' for the assembly: " + type.GetTypeInfo().Assembly.FullName); } }
public IDataProvider GetProviderOrNull(Type type) { if (TypeProviders.TryGetValue(type, out var result)) { return(result); } var factory = GetProviderFactory(type); if (factory != null) { lock (TypeProviders) { try { return(TypeProviders[type] = factory.GetProvider(type)); } catch { return(null); } } } if (type.IsInterface) { return(new InterfaceDataProvider(type)); } else { return(null); } }