public void RegisterDependencyType(DependencyType dt) { if (dt == null) { throw new ArgumentNullException(nameof(dt)); } RegisterDependencyTypeCore(dt); }
public bool CouldTransit(DependencyType other) { if (other == null) { throw new ArgumentNullException(nameof(other)); } if (Transitivity == DependencyTransitivity.All) { return(true); } if (Transitivity == DependencyTransitivity.SameType && Name == other.Name) { return(true); } return(false); }
private void RegisterDependencyTypeCore(DependencyType dt) { DependencyType stored; if (_types.TryGetValue(dt.Name, out stored)) { // to-do: add check for phase when new value overwrites old value if (stored.IsTransitive != dt.IsTransitive) { Logger.LogError($"Dependency type {JsonUtility.Serialize(dt)} isn't registered successfully because a different type with name {dt.Name} is already registered. Already registered one: {JsonUtility.Serialize(stored)}."); throw new InvalidDataException($"A different dependency type with name {dt.Name} is already registered"); } if (stored.Phase == null) { stored.Phase = dt.Phase; } Logger.LogVerbose($"Same dependency type with name {dt.Name} has already been registered, ignored."); return; } _types[dt.Name] = dt; Logger.LogVerbose($"Dependency type is successfully registered. Name: {dt.Name}, IsTransitive: {dt.IsTransitive}, Phase to work on: {dt.Phase}."); }