public void HasDependency(IDataSupplier dataSupplier, IDataDependency dependency)
        {
            if (ReferenceEquals(dataSupplier, null))
            {
                throw new ArgumentNullException("dataSupplier");
            }

            if (dataSupplier == null)
            {
                throw new Exception("Data provider " + dataSupplier + " is not a supplier of data");
            }

            if (ReferenceEquals(dependency, null))
            {
                dependency = dataSupplier.DefaultDependency;
            }

            if (!dataSupplier.IsSupplierOf(dependency))
            {
                throw new Exception("Data provider " + dataSupplier + " is not a supplier of " + dependency);
            }

            if (DataSupplierDependencies == null)
            {
                DataSupplierDependencies = new List <Tuple <IDataSupplier, IDataDependency> >();
            }

            DataSupplierDependencies.Add(new Tuple <IDataSupplier, IDataDependency>(dataSupplier, dependency));
        }
 T IDebuggable.GetDebugInfo <T>(int patentDepth, int childDepth)
 {
     return(new DebugDataConsumer
     {
         DependentProviders = ReferenceEquals(DataSupplierDependencies, null)
             ? null
             : DataSupplierDependencies.Select(s => new DebugDataProviderDependency
         {
             DataProvider = s.Item1.GetDebugInfo <DebugDataProvider>(),
             Data = s.Item2 == null ? null : new DebugDataScope
             {
                 DataType = s.Item2.DataType,
                 ScopeName = s.Item2.ScopeName
             }
         }).ToList(),
         DependentSupplies = ReferenceEquals(DataSupplyDependencies, null)
             ? null
             : DataSupplyDependencies.Select(s => s.GetDebugInfo <DebugDataSupply>()).ToList(),
         DependentData = ReferenceEquals(DataDependencies, null)
             ? null
             : DataDependencies.Select(s => new DebugDataScope
         {
             DataType = s.DataType,
             ScopeName = s.ScopeName
         }).ToList()
     } as T);
 }
Exemple #3
0
 public void Add(IDataConsumerNeeds needs)
 {
     if (needs.DataSupplierDependencies != null)
     {
         DataSupplierDependencies.AddRange(needs.DataSupplierDependencies);
     }
     if (needs.DataSupplyDependencies != null)
     {
         DataSupplyDependencies.AddRange(needs.DataSupplyDependencies);
     }
     if (needs.DataDependencies != null)
     {
         DataDependencies.AddRange(needs.DataDependencies);
     }
 }
Exemple #4
0
 public void Add(Tuple <IDataSupplier, IDataDependency> supplier)
 {
     DataSupplierDependencies.Add(supplier);
 }