示例#1
0
        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");
        }