Esempio n. 1
0
 public IStaticPanelDefinition GetStaticPanelDefinition <TViewModel>()
 {
     try
     {
         return(StaticPanelDefinitions.Single(o => o.ViewModel == typeof(TViewModel) || o.IViewModel == typeof(TViewModel)));
     }
     catch (InvalidOperationException)
     {
         throw new Exception($"Error : There is no registered static panel definition associated with a ViewModel of type {typeof(TViewModel).Name}");
     }
 }
Esempio n. 2
0
        private void AssertStaticPanelDefinition(IStaticPanelDefinition definition)
        {
            definition.AssertParameterNotNull(nameof(definition));

            definition.IView.AssertNotNull($"IStaticPanelDefinition.IView");
            definition.View.AssertNotNull($"IStaticPanelDefinition.View");
            definition.IViewModel.AssertNotNull($"IStaticPanelDefinition.IViewModel");
            definition.ViewModel.AssertNotNull($"IStaticPanelDefinition.ViewModel");

            definition.IView.AssertTypeHasGuid(ComposeAssertGuidMessage(definition.IView));
            definition.View.AssertTypeHasGuid(ComposeAssertGuidMessage(definition.View));
            definition.IViewModel.AssertTypeHasGuid(ComposeAssertGuidMessage(definition.IViewModel));
            definition.ViewModel.AssertTypeHasGuid(ComposeAssertGuidMessage(definition.ViewModel));


            if (!definition.View.IsClass ||
                !definition.View.IsSubclassOf(typeof(UserControl)) ||
                definition.View.GetConstructors().Count() != 1 ||
                definition.View.GetConstructors().Single().GetParameters().Any())
            {
                throw new Exception($"Error : {definition.View.Name} must be a class inheriting from user control with an empty constructor.");
            }

            if (!definition.View.Implements(definition.IView))
            {
                throw new Exception($"Error : {definition.View.Name} does not implement {definition.IView.Name}.");
            }

            if (!definition.ViewModel.Implements(definition.IViewModel))
            {
                throw new Exception($"Error : {definition.ViewModel.Name} does not implement {definition.IViewModel.Name}.");
            }

            if (StaticPanelDefinitions.Any(def => def.View == definition.View))
            {
                throw new Exception($"Error! A StaticPanelDefinition with the associated {definition.View.Name} View has already been registered.");
            }
            if (StaticPanelDefinitions.Any(def => def.IView == definition.IView))
            {
                throw new Exception($"Error! A StaticPanelDefinition with the associated View interface {definition.IView.Name} has already been registered.");
            }
            if (StaticPanelDefinitions.Any(def => def.ViewModel == definition.ViewModel))
            {
                throw new Exception($"Error! A StaticPanelDefinition with the associated ViewModel : {definition.ViewModel.Name} has already been registered.");
            }
            if (StaticPanelDefinitions.Any(def => def.IViewModel == definition.IViewModel))
            {
                throw new Exception($"Error! A StaticPanelDefinition with the associated ViewModel interface : {definition.IViewModel.Name} has already been registered.");
            }

            MetadataAsserter.AssertMetadataCollection <IStaticPanelDefinition, IStaticPanelMetadata>(definition, $"StaticPanelDefinition<{definition.IView.Name}, {definition.View.Name}, {definition.IViewModel.Name}, {definition.ViewModel.Name}>");
        }
Esempio n. 3
0
 public bool IsRegistered(IStaticPanelDefinition definition)
 {
     definition.AssertParameterNotNull(nameof(definition));
     return(StaticPanelDefinitions.Contains(definition));
 }