public override bool TryProvideDefaultValue(ParameterInfo parameter, out object?value) { if (parameter.HasDefaultValue) { value = parameter.DefaultValue; return(true); } Type resultType = parameter.ParameterType; if (resultType.IsValueType) { try { value = Activator.CreateInstance(resultType); return(true); } catch { value = default; return(false); } } else { if (parameter.CanBeNull()) { value = default; return(true); } if (resultType == typeof(string)) { value = string.Empty; return(true); } try { value = Activator.CreateInstance(resultType); return(true); } catch { value = default; return(false); } } }
public override bool TryProvideSpecialValue(ParameterInfo parameter, ICommand command, out Message?value) => command.Update.TryGetMessage(out value) || parameter.CanBeNull();
public override bool TryProvideSpecialValue(ParameterInfo parameter, ICommand command, out ChatId?value) => command.Update.TryGetChatIdOrUserId(out value) || parameter.CanBeNull();