using Microsoft.VisualStudio.TestTools.UnitTesting; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.Core.DI; namespace Tango.UnitTesting { [TestClass] [TestCategory("Dependency Injection")] public class DependencyInjection_TST { [TestMethod] public void Test_Tango_Dependency_Injection() { TangoIOC.Default.Register(); TangoIOC.Default.Register(); TangoIOC.Default.Register(); var vm = TangoIOC.Default.GetInstance(); Assert.IsNotNull(vm); Assert.IsNotNull(vm.Service); Assert.IsNotNull(vm.DataProvider); Assert.IsNotNull(vm.Service.DataProvider); Assert.IsNotNull(vm.GetDataProvider()); } public class ViewModel { [TangoInject] private IDataProvider _dataProvider; public IDataProvider GetDataProvider() { return _dataProvider; } public IService Service { get; set; } public IDataProvider DataProvider { get; set; } public ViewModel(IService service, IDataProvider dataProvider) { DataProvider = dataProvider; Service = service; } } public interface IDataProvider { } public class DataProvider : IDataProvider { } public interface IService { IDataProvider DataProvider { get; set; } } public class Service : IService { [TangoInject] public IDataProvider DataProvider { get; set; } } } }