public bool SolveOptionalType <T>(ref Optional <T> type, DB.Document doc, DB.ElementTypeGroup group, Func <DB.Document, string, T> recoveryAction, string paramName) where T : DB.ElementType { bool wasMissing = type.IsMissing; if (wasMissing) { type = (T)doc.GetElement(doc.GetDefaultElementTypeId(group)) ?? throw new ArgumentException($"No suitable {group} has been found.", paramName); } else if (type.Value == null) { type = (T)recoveryAction.Invoke(doc, paramName); } return(wasMissing); }
public bool SolveOptionalType <T>(ref Optional <T> type, DB.Document doc, DB.ElementTypeGroup group, string paramName) where T : DB.ElementType { return(SolveOptionalType(ref type, doc, group, (document, name) => throw new ArgumentNullException(paramName), paramName)); }