protected T GetParameterOrDefault <T>(T defaultValue = default, [CallerMemberName] string key = "") { if (string.IsNullOrEmpty(key)) { throw new ArgumentException("Key not specified.", nameof(key)); } return(parameters.TryGetValue <T>(key, out var value) ? value : defaultValue); }