public object Create(IContext context) { if (Creator == null) { var getCreator = context.Kernel.Get <Func <Type, ConfigObjectCreator> >(); var service = context.Request.Service; Creator = getCreator(IsBroadcast ? service.GetGenericArguments().Single() : service); } return(IsBroadcast ? Creator.ChangeNotifications : Creator.GetLatest()); }
private ConfigObjectCreator GetCreator(IContext context) { if (Creator == null) { lock (_creatorLock) if (Creator == null) { var getCreator = context.Kernel.Get <Func <Type, ConfigObjectCreator> >(); var service = context.Request.Service; Creator = getCreator(IsSourceBlock(service) ? service.GetGenericArguments().Single() : service); } } return(Creator); }
public void Validate() { List <Type> invalidConfigObjectTypes = _assemblyProvider.GetAllTypes() .Where(t => t.GetTypeInfo().ImplementedInterfaces.Any(i => i == typeof(IConfigObject)) && !ConfigObjectCreator.IsConfigObject(t)).ToList(); if (invalidConfigObjectTypes.Count == 0) { return; } throw new ProgrammaticException( $"The type/s {string.Join(", ", invalidConfigObjectTypes.Select(t => t.Name))} are value types and cannot implement IConfigObject interfaces"); }