Exemple #1
0
        private static object ComputeConfigDelegateResult(this IDynamicPanelDefinition definition, string delegatePropertyName, object view, object viewModel)
        {
            definition.AssertNotNull(nameof(definition));
            view.AssertParameterNotNull(nameof(view));
            viewModel.AssertParameterNotNull(nameof(viewModel));

            var config     = definition.GetConfig();
            var configType = config.GetType().GetGenericArguments().Single();

            var del = config.GetType().GetProperty(delegatePropertyName).GetValue(config).SafeCast <Delegate>();

            if (configType == definition.View || configType == definition.IView)
            {
                return(del.DynamicInvoke(view));
            }

            else if (configType == definition.ViewModel || configType == definition.IViewModel)
            {
                return(del.DynamicInvoke(viewModel));
            }

            else
            {
                throw new Exception($"Internal Error : DynamicPanelDefinition<{definition.IView.Name}, {definition.View.Name}, {definition.IViewModel.Name}, {definition.ViewModel.Name}> : \n " +
                                    $"DynamicPanelConfiguration Generic Type is not valid and has not been correctly asserted.");
            }
        }
Exemple #2
0
        internal static IDynamicPanelMetadata GetConfig(this IDynamicPanelDefinition definition)
        {
            definition.AssertNotNull(nameof(definition));

            return(definition.Single(o => o.GetType().IsGenericType&&
                                     o.GetType().GetGenericTypeDefinition() == typeof(DynamicPanelConfiguration <>)));
        }
Exemple #3
0
        internal static PanelPlacement GetPlacement(this IDynamicPanelDefinition definition)
        {
            definition.AssertNotNull(nameof(definition));

            var config = definition.GetConfig();

            return(config.GetType().GetProperty("Placement").GetValue(config).SafeCast <PanelPlacement>());
        }
Exemple #4
0
        internal static IMultipleSelection GetSelectionBinding(this IDynamicPanelDefinition definition, IUnityContainer container)
        {
            definition.AssertNotNull(nameof(definition));
            definition.AssertParameterNotNull(nameof(container));

            var selectionType   = definition.GetSelectionBindingType();
            var eventAggregator = container.Resolve <IEventAggregator>();

            return(eventAggregator.GetEvent(selectionType).SafeCast <IMultipleSelection>());
        }
Exemple #5
0
 internal static Type GetSelectionBindingRawType(this IDynamicPanelDefinition definition)
 {
     definition.AssertNotNull(nameof(definition));
     return(definition.GetSelectionBindingType().GetBaseTypeGenericArgument(typeof(MultipleSelection <>)));
 }
Exemple #6
0
 internal static Type GetSelectionBindingType(this IDynamicPanelDefinition definition)
 {
     definition.AssertNotNull(nameof(definition));
     return(definition.OfType <PanelSelectionBinding>().Single().SelectionType);
 }