/// <summary> /// Initializes a new instance of the <see cref="GraphViewModel"/> class. /// </summary> /// <param name="serviceProvider">A service provider that can provide a <see cref="IDispatcherService"/> and an <see cref="GraphViewModelService"/> to use for this view model.</param> /// <param name="type"></param> /// <param name="rootPresenters">The root <see cref="INodePresenter"/> instances.</param> private GraphViewModel([NotNull] IViewModelServiceProvider serviceProvider, [NotNull] Type type, [NotNull] IEnumerable <INodePresenter> rootPresenters) : base(serviceProvider) { if (serviceProvider == null) { throw new ArgumentNullException(nameof(serviceProvider)); } if (type == null) { throw new ArgumentNullException(nameof(type)); } if (rootPresenters == null) { throw new ArgumentNullException(nameof(rootPresenters)); } GraphViewModelService = serviceProvider.TryGet <GraphViewModelService>(); if (GraphViewModelService == null) { throw new InvalidOperationException($"{nameof(GraphViewModel)} requires a {nameof(GraphViewModelService)} in the service provider."); } Logger = GlobalLogger.GetLogger(DefaultLoggerName); if (rootPresenters == null) { throw new ArgumentNullException(nameof(rootNode)); } var viewModelFactory = serviceProvider.Get <GraphViewModelService>().NodeViewModelFactory; viewModelFactory.CreateGraph(this, type, rootPresenters); }
/// <summary> /// Initializes a new instance of the <see cref="ObservableViewModel"/> class. /// </summary> /// <param name="serviceProvider">A service provider that can provide a <see cref="IDispatcherService"/> and an <see cref="ObservableViewModelService"/> to use for this view model.</param> private ObservableViewModel(IViewModelServiceProvider serviceProvider) : base(serviceProvider) { ObservableViewModelService = serviceProvider.TryGet<ObservableViewModelService>(); if (ObservableViewModelService == null) throw new InvalidOperationException($"{nameof(ObservableViewModel)} requires a {nameof(ObservableViewModelService)} in the service provider."); Logger = GlobalLogger.GetLogger(DefaultLoggerName); }
/// <summary> /// Initializes a new instance of the <see cref="EditableViewModel"/> class. /// </summary> /// <param name="serviceProvider">A service provider that can provide a <see cref="IDispatcherService"/> and an <see cref="IUndoRedoService"/> to use for this view model.</param> protected EditableViewModel([NotNull] IViewModelServiceProvider serviceProvider) : base(serviceProvider) { if (serviceProvider.TryGet <IUndoRedoService>() == null) { throw new ArgumentException("The given IViewModelServiceProvider instance does not contain an service implementing IUndoRedoService."); } }
/// <summary> /// Initializes a new instance of the <see cref="EditableViewModel"/> class. /// </summary> /// <param name="serviceProvider">A service provider that can provide a <see cref="IDispatcherService"/> and an <see cref="ITransactionalActionStack"/> to use for this view model.</param> protected EditableViewModel(IViewModelServiceProvider serviceProvider) : base(serviceProvider) { if (serviceProvider.TryGet <ITransactionalActionStack>() == null) { throw new ArgumentException("The given IViewModelServiceProvider instance does not contain an ITransactionalActionStack service."); } }
/// <summary> /// Initializes a new instance of the <see cref="DispatcherViewModel"/> class. /// </summary> /// <param name="serviceProvider">A service provider that can provide a <see cref="IDispatcherService"/> to use for this view model.</param> protected DispatcherViewModel(IViewModelServiceProvider serviceProvider) : base(serviceProvider) { Dispatcher = serviceProvider.TryGet <IDispatcherService>(); if (Dispatcher == null) { throw new InvalidOperationException($"{nameof(DispatcherViewModel)} requires a {nameof(IDispatcherService)} in the service provider."); } }
/// <summary> /// Initializes a new instance of the <see cref="GraphViewModel"/> class. /// </summary> /// <param name="serviceProvider">A service provider that can provide a <see cref="IDispatcherService"/> and an <see cref="GraphViewModelService"/> to use for this view model.</param> private GraphViewModel(IViewModelServiceProvider serviceProvider) : base(serviceProvider) { GraphViewModelService = serviceProvider.TryGet <GraphViewModelService>(); if (GraphViewModelService == null) { throw new InvalidOperationException($"{nameof(GraphViewModel)} requires a {nameof(GraphViewModelService)} in the service provider."); } Logger = GlobalLogger.GetLogger(DefaultLoggerName); }
/// <inheritdoc/> public object TryGet(Type serviceType) { if (serviceType == null) { throw new ArgumentNullException(nameof(serviceType)); } object serviceFound = null; foreach (var service in services.Where(serviceType.IsInstanceOfType)) { if (serviceFound != null) { throw new InvalidOperationException("Multiple services match the given type."); } serviceFound = service; } return(parentProvider != null && serviceFound == null?parentProvider.TryGet(serviceType) : serviceFound); }
private static IEnumerable <Type> FindScriptType([NotNull] IViewModelServiceProvider serviceProvider, [NotNull] AssetItem scriptAsset) { return(serviceProvider.TryGet <IScriptSourceCodeResolver>()?.GetTypesFromSourceFile(scriptAsset.FullPath)); }
/// <summary> /// Initializes a new instance of the <see cref="DispatcherViewModel"/> class. /// </summary> /// <param name="serviceProvider">A service provider that can provide a <see cref="IDispatcherService"/> to use for this view model.</param> protected DispatcherViewModel(IViewModelServiceProvider serviceProvider) : base(serviceProvider) { Dispatcher = serviceProvider.TryGet<IDispatcherService>(); if (Dispatcher == null) throw new InvalidOperationException($"{nameof(DispatcherViewModel)} requires a {nameof(IDispatcherService)} in the service provider."); }