internal static bool TryCreateReference( Type candidateType, out ICompositeDataCookerReference reference) { Guard.NotNull(candidateType, nameof(candidateType)); reference = null; if (candidateType.IsPublicAndInstantiatableOfType(typeof(ICompositeDataCookerDescriptor))) { // There must be an empty, public constructor if (candidateType.TryGetEmptyPublicConstructor(out var constructor)) { try { reference = new CompositeDataCookerReference(candidateType); } catch (InvalidOperationException e) { Console.Error.WriteLine($"Cooker Disabled: {candidateType}."); Console.Error.WriteLine($"{e.Message}"); return(false); } } } return(reference != null); }
/// <summary> /// Generate a composite data cooker 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 TryCreateCompositeDataCookerReference( Type candidateType, out ICompositeDataCookerReference reference) { Guard.NotNull(candidateType, nameof(candidateType)); return(CompositeDataCookerReference.TryCreateReference(candidateType, out reference)); }
public bool AddCompositeDataCookerReference(ICompositeDataCookerReference dataCooker) { Guard.NotNull(dataCooker, nameof(dataCooker)); bool addedCooker = false; lock (this.compositeDataCookerReferences) { addedCooker = this.compositeDataCookerReferences.Add(dataCooker); if (addedCooker) { this.compositeDataCookerReferencesByPath[dataCooker.Path] = dataCooker; } } return(addedCooker); }