public ExtensibleEnumerationProperty(Parameters parameters)
            : base(parameters)
        {
            _definition = ExtensibleEnumUtility.GetDefinition(PropertyType);

            var filterProvider = new EnumValueFilterProvider <DisableExtensibleEnumValuesAttribute> (
                PropertyInfo,
                t => _definition.GetCustomAttributes <DisableExtensibleEnumValuesAttribute> ());

            _enumerationValueFilter = filterProvider.GetEnumerationValueFilter();
        }
Exemplo n.º 2
0
        /// <exception cref="InvalidOperationException">
        /// The enum type has an UndefinedEnumValueAttribute with a value that does not match the enum's type.
        /// <para>- or -</para>
        /// <para>The property is nullable and the property's type defines an UndefinedEnumValueAttribute</para>
        /// </exception>
        public EnumerationProperty(Parameters parameters)
            : base(parameters)
        {
            if (AttributeUtility.IsDefined <FlagsAttribute> (parameters.UnderlyingType, false))
            {
                throw new InvalidOperationException(
                          string.Format(
                              "The property '{0}' defined on type '{1}' is a flags-enum, which is not supported.",
                              Identifier,
                              PropertyInfo.DeclaringType));
            }
            _undefinedValue = GetUndefinedValue();

            var filterProvider = new EnumValueFilterProvider <DisableEnumValuesAttribute> (
                PropertyInfo,
                t => AttributeUtility.GetCustomAttributes <DisableEnumValuesAttribute> (t, true));

            _enumerationValueFilter = filterProvider.GetEnumerationValueFilter();
        }