Пример #1
0
        protected void Argument(
            NameString name,
            Action <IArgumentDescriptor> argument)
        {
            if (argument is null)
            {
                throw new ArgumentNullException(nameof(argument));
            }

            name.EnsureNotEmpty(nameof(name));

            ParameterInfo?parameter = null;

            Parameters?.TryGetValue(name, out parameter);

            ArgumentDescriptor?descriptor = parameter is null
                ? Arguments.FirstOrDefault(t => t.Definition.Name.Equals(name))
                : Arguments.FirstOrDefault(t => t.Definition.Parameter == parameter);

            if (descriptor is null && Definition.Arguments.Count > 0)
            {
                ArgumentDefinition?definition = parameter is null
                    ? Definition.Arguments.FirstOrDefault(t => t.Name.Equals(name))
                    : Definition.Arguments.FirstOrDefault(t => t.Parameter == parameter);

                if (definition is not null)
                {
                    descriptor = ArgumentDescriptor.From(Context, definition);
                }
            }

            if (descriptor is null)
            {
                descriptor = parameter is null
                    ? ArgumentDescriptor.New(Context, name)
                    : ArgumentDescriptor.New(Context, parameter);

                Arguments.Add(descriptor);
            }

            argument(descriptor);
        }
Пример #2
0
 public static ArgumentDescriptor ToDescriptor(
     this ArgumentDefinition definition,
     IDescriptorContext context)
 => ArgumentDescriptor.From(context, definition);