public IThreatEventMitigation AddMitigation(IMitigation mitigation, IStrength strength, MitigationStatus status = MitigationStatus.Proposed, string directives = null) { if (!(IsInitialized?.Get() ?? false)) { return(null); } if (mitigation == null) { throw new ArgumentNullException(nameof(mitigation)); } IThreatEventMitigation result = null; if (GetMitigation(mitigation.Id) == null) { result = new ThreatEventMitigation(MySelf?.Get(), mitigation, strength); result.Status = status; result.Directives = directives; if (_mitigations == null) { _mitigations = new List <IThreatEventMitigation>(); } _mitigations.Add(result); Dirty.IsDirty = true; _threatEventMitigationAdded?.Invoke(MitigationsContainer?.Get(), result); } return(result); }
public IThreatEventMitigation AddMitigation(IMitigation mitigation, IStrength strength, MitigationStatus status = MitigationStatus.Proposed, string directives = null) { if (mitigation == null) { throw new ArgumentNullException(nameof(mitigation)); } IThreatEventMitigation result = null; if (GetMitigation(mitigation.Id) == null && Instance is IThreatEvent threatEvent) { result = new ThreatEventMitigation(threatEvent, mitigation, strength) { Status = status, Directives = directives }; if (_mitigations == null) { _mitigations = new List <IThreatEventMitigation>(); } _mitigations.Add(result); if (Instance is IDirty dirtyObject) { dirtyObject.SetDirty(); } _threatEventMitigationAdded?.Invoke(threatEvent, result); } return(result); }