示例#1
0
        private static void ConfigureViewModelSettings(ViewModelSettings vm, NamespaceSettings ns,
                                                       RenderSettings settings, string entity = null, string entityNamespace = null)
        {
            // view model type can not be null or empty; so if possible we'll come up with one
            // using the entity name if not given, otherwise we fail
            if (string.IsNullOrWhiteSpace(vm.type))
            {
                if (!string.IsNullOrWhiteSpace(entity))
                {
                    vm.type =
                        $"{ns.vmDefaults.typePrefix}{entity}{ns.vmDefaults.typeSuffix}";
                }
                else
                {
                    throw new InvalidRenderSettingsException("Parameter 'type' is required for adjunct view model definitions");
                }
            }

            // inherit emit to directory from namespace view model setting defaults if not
            // specified
            vm.emitTo = vm.emitTo ?? ns.vmDefaults.emitTo;
            vm.emitTo = EstablishSettingsDirectory(settings.emitDir, vm.emitTo,
                                                   "View model source file directory ('emitTo')");
            vm.EntityNamespace(entityNamespace);
            vm.EntityType(entity);
            vm.ViewModelNamespace(ns.mapToNamespace);

            InheritViewModelSettingsBase(vm, ns.vmDefaults);

            AssertPropertyDefinitionsValid(vm);
            AssertCollectionDefinitionsValid(vm);
        }
示例#2
0
        public static void IncludeViewModelSettings(RenderSettings settings, ViewModelSettings vm)
        {
            // get target namespace
            var ns = settings.namespaces[vm.EntityNamespace()];

            // merge existing view model settings, if there are any
            if (ns.viewModels.ContainsKey(vm.EntityType()))
            {
                var xVM = ns.viewModels[vm.EntityType()];
                vm.type   = vm.type ?? xVM.type;
                vm.emitTo = vm.emitTo ?? xVM.emitTo;
                InheritViewModelSettingsBase(vm, xVM);

                // replace existing model with one merged with attribute settings
                ns.viewModels[vm.EntityType()] = vm;
            }
            // if no settings exist, merge with view model defaults for namespace and add it in
            else
            {
                ConfigureViewModelSettings(vm, ns, settings, vm.EntityType(), vm.EntityNamespace());
                ns.viewModels.Add(vm.EntityType(), vm);
            }
        }