/// <inheritdoc /> public void ProcessType(Type type, string sourceName) { // Find source data cookers if (SourceDataCookerReference.TryCreateReference(type, out var sourceDataCookerReference)) { Debug.Assert(sourceDataCookerReference != null); this.repoBuilder.AddSourceDataCookerReference(sourceDataCookerReference); } // Find composite data cookers if (CompositeDataCookerReference.TryCreateReference(type, out var compositeDataCookerReference)) { Debug.Assert(compositeDataCookerReference != null); this.repoBuilder.AddCompositeDataCookerReference(compositeDataCookerReference); } // Find tables if (TableExtensionReference.TryCreateReference(type, out var dataExtensionReference)) { Debug.Assert(dataExtensionReference != null); this.repoBuilder.AddTableExtensionReference(dataExtensionReference); } // Find data processors if (DataProcessorReference.TryCreateReference(type, out var dataProcessorReference)) { Debug.Assert(dataProcessorReference != null); this.repoBuilder.AddDataProcessorReference(dataProcessorReference); } }
/// <summary> /// Generate a table reference from a given type. /// </summary> /// <param name="candidateType"> /// Data extension type. /// </param> /// <param name="reference"> /// Data extension reference. /// </param> /// <returns> /// <c>true</c> if succeeded, <c>false</c> otherwise. /// </returns> public bool TryCreateTableReference( Type candidateType, out ITableExtensionReference reference) { Guard.NotNull(candidateType, nameof(candidateType)); return(TableExtensionReference.TryCreateReference(candidateType, out reference)); }
/// <inheritdoc /> public bool AddTable(TableDescriptor tableDescriptor) { lock (this.dataProcessor) { if (this.dataExtensionRetrievalFactory != null) { throw new InvalidOperationException($"Cannot add tables after calling {nameof(FinalizeTables)}."); } } if (tableDescriptor.RequiredDataCookers.Any() || tableDescriptor.RequiredDataProcessors.Any()) { if (TableExtensionReference.TryCreateReference(tableDescriptor.Type, true, out var tableReference)) { this.tableReferences[tableDescriptor] = tableReference; return(true); } } return(false); }