Определите интерфейс для каждой из ваших ViewModels и затем зарегистрируйте их соответственно.
public interface IViewModel
{
List<IUser> Users { get; }
}
public class ViewModel : IViewModel
{
List<IUser> Users { get; }
}
Container.RegisterType<IViewModel, ViewModel>();
В вашем конструкторе убедитесь, что вводится интерфейсный тип, а не конкретный тип, так как Unity обязательно создаст экземпляр конкретного типа, поскольку он разрешим; тогда как интерфейс может иметь N реализаций.
Кроме того, ваш код должен быть сконструирован так, чтобы данные, которые должны существовать в приложении, приходили из службы, а не из ViewModel. Создание вашей ViewModel синглтоном не должно быть вашим подходом, передавайте данные через сервис. таким образом, ваша ViewModel может быть построена / уничтожена по желанию, данные, которые вы хотите сохранить, существуют в другом месте.
Container.RegisterType<IService, Service>(new ContainerControlledLifetimeManager());
Container.RegisterType<IViewModel, ViewModel>();
...
public List<IUser> Users
{
get { return Container.Resolve<IService>().GetUsers(); }
}