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);
                }
            }
        }
Beispiel #2
0
 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();