Exemplo n.º 1
0
        protected virtual void TryInjectingServicesToVM(Export vmExport, object vm, object containerContext)
        {
            var services = (IEnumerable <Type>)vmExport.Metadata[ExportViewModel.ContextAwareServicesProperty];

            var serviceConsumerVM = vm as IServiceConsumer;

            if (serviceConsumerVM != null && services != null)  // then we should feed the view model with these services
            {
                foreach (var serviceType in services)
                {
                    //Get services from the MEFComposition
                    Export serviceExport = resolver.GetServiceByContract(serviceType);
                    if (serviceExport != null)
                    {
                        serviceConsumerVM.ServiceLocator.RegisterService(serviceExport.Value, serviceType);
                        InjectContext(serviceExport, containerContext);
                    }
                    else
                    {
                        Debug.WriteLine("Cannot find export for service : " + serviceType.FullName);
                    }
                }
                serviceConsumerVM.OnServicesInjected();
            }
        }