예제 #1
0
        internal Parameter(
            PropertyAccessor propertyAccessor,
            ParameterAttribute parameterAttribute,
            IDefaultValuePolicy defaultValuePolicy
            )
        {
            if (propertyAccessor == null)
            {
                throw Logger.Fatal.ArgumentNull(nameof(propertyAccessor));
            }

            if (parameterAttribute == null)
            {
                throw Logger.Fatal.ArgumentNull(nameof(parameterAttribute));
            }

            if (defaultValuePolicy == null)
            {
                throw Logger.Fatal.ArgumentNull(nameof(defaultValuePolicy));
            }

            PropertyAccessor   = propertyAccessor;
            ParameterAttribute = parameterAttribute;
            DefaultValuePolicy = defaultValuePolicy;

            ValidationAttributes = PropertyAccessor.PropertyInfo
                                   .GetCustomAttributes <ParameterValidationAttribute>(inherit: true)
                                   .ToImmutableArray();
        }
예제 #2
0
        internal Parameter(
            PropertyAccessor propertyAccessor,
            ParameterAttribute parameterAttribute,
            IDefaultValuePolicy defaultValuePolicy
        )
        {
            if (propertyAccessor == null)
            {
                throw Logger.Fatal.ArgumentNull(nameof(propertyAccessor));
            }

            if (parameterAttribute == null)
            {
                throw Logger.Fatal.ArgumentNull(nameof(parameterAttribute));
            }

            if (defaultValuePolicy == null)
            {
                throw Logger.Fatal.ArgumentNull(nameof(defaultValuePolicy));
            }

            PropertyAccessor = propertyAccessor;
            ParameterAttribute = parameterAttribute;
            DefaultValuePolicy = defaultValuePolicy;

            ValidationAttributes = PropertyAccessor.PropertyInfo
                .GetCustomAttributes<ParameterValidationAttribute>(inherit: true)
                .ToImmutableArray();
        }
예제 #3
0
        public ParameterSetBuilder(HarshObjectMetadata metadata, IDefaultValuePolicy defaultValuePolicy)
        {
            if (metadata == null)
            {
                throw Logger.Fatal.ArgumentNull(nameof(metadata));
            }

            Metadata = metadata;

            DefaultParameterSetName = metadata
                                      .ObjectTypeInfo
                                      .GetCustomAttribute <DefaultParameterSetAttribute>(inherit: true)?
                                      .DefaultParameterSetName;

            DefaultValuePolicy = defaultValuePolicy ?? new NullDefaultValuePolicy();

            ValidateNoInvalidParameters();
        }
예제 #4
0
        public ParameterSetBuilder(HarshObjectMetadata metadata, IDefaultValuePolicy defaultValuePolicy)
        {
            if (metadata == null)
            {
                throw Logger.Fatal.ArgumentNull(nameof(metadata));
            }

            Metadata = metadata;

            DefaultParameterSetName = metadata
                .ObjectTypeInfo
                .GetCustomAttribute<DefaultParameterSetAttribute>(inherit: true)?
                .DefaultParameterSetName;

            DefaultValuePolicy = defaultValuePolicy ?? new NullDefaultValuePolicy();

            ValidateNoInvalidParameters();
        }
예제 #5
0
 public ParameterSetBuilder(Type type, IDefaultValuePolicy defaultValuePolicy)
     : this(new HarshObjectMetadata(type), defaultValuePolicy)
 {
 }
예제 #6
0
 public ParameterSetBuilder(Type type, IDefaultValuePolicy defaultValuePolicy)
     : this(new HarshObjectMetadata(type), defaultValuePolicy)
 {
 }