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}"); } }
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}>"); }
public bool IsRegistered(IStaticPanelDefinition definition) { definition.AssertParameterNotNull(nameof(definition)); return(StaticPanelDefinitions.Contains(definition)); }