public static EnumType Create( string name, string namespaceName, PrimitiveType underlyingType, bool isFlags, IEnumerable <EnumMember> members, IEnumerable <MetadataProperty> metadataProperties) { Check.NotEmpty(name, nameof(name)); Check.NotEmpty(namespaceName, nameof(namespaceName)); Check.NotNull <PrimitiveType>(underlyingType, nameof(underlyingType)); if (!Helper.IsSupportedEnumUnderlyingType(underlyingType.PrimitiveTypeKind)) { throw new ArgumentException(Strings.InvalidEnumUnderlyingType, nameof(underlyingType)); } EnumType enumType = new EnumType(name, namespaceName, underlyingType, isFlags, DataSpace.CSpace); if (members != null) { foreach (EnumMember member in members) { if (!Helper.IsEnumMemberValueInRange(underlyingType.PrimitiveTypeKind, Convert.ToInt64(member.Value, (IFormatProvider)CultureInfo.InvariantCulture))) { throw new ArgumentException(Strings.EnumMemberValueOutOfItsUnderylingTypeRange(member.Value, (object)member.Name, (object)underlyingType.Name), nameof(members)); } enumType.AddMember(member); } } if (metadataProperties != null) { enumType.AddMetadataProperties(metadataProperties.ToList <MetadataProperty>()); } enumType.SetReadOnly(); return(enumType); }
public static EnumType Create( string name, string namespaceName, PrimitiveType underlyingType, bool isFlags, IEnumerable <EnumMember> members, IEnumerable <MetadataProperty> metadataProperties) { Check.NotEmpty(name, "name"); Check.NotEmpty(namespaceName, "namespaceName"); Check.NotNull(underlyingType, "underlyingType"); if (!Helper.IsSupportedEnumUnderlyingType(underlyingType.PrimitiveTypeKind)) { throw new ArgumentException(Strings.InvalidEnumUnderlyingType, "underlyingType"); } var instance = new EnumType(name, namespaceName, underlyingType, isFlags, DataSpace.CSpace); if (members != null) { foreach (var member in members) { if (!Helper.IsEnumMemberValueInRange( underlyingType.PrimitiveTypeKind, Convert.ToInt64(member.Value, CultureInfo.InvariantCulture))) { throw new ArgumentException( Strings.EnumMemberValueOutOfItsUnderylingTypeRange( member.Value, member.Name, underlyingType.Name), "members"); } instance.AddMember(member); } } if (metadataProperties != null) { instance.AddMetadataProperties(metadataProperties); } instance.SetReadOnly(); return(instance); }
public static EnumType Create( string name, string namespaceName, PrimitiveType underlyingType, bool isFlags, IEnumerable<EnumMember> members, IEnumerable<MetadataProperty> metadataProperties) { Check.NotEmpty(name, "name"); Check.NotEmpty(namespaceName, "namespaceName"); Check.NotNull(underlyingType, "underlyingType"); if (!Helper.IsSupportedEnumUnderlyingType(underlyingType.PrimitiveTypeKind)) { throw new ArgumentException(Strings.InvalidEnumUnderlyingType, "underlyingType"); } var instance = new EnumType(name, namespaceName, underlyingType, isFlags, DataSpace.CSpace); if (members != null) { foreach (var member in members) { if (!Helper.IsEnumMemberValueInRange( underlyingType.PrimitiveTypeKind, Convert.ToInt64(member.Value, CultureInfo.InvariantCulture))) { throw new ArgumentException( Strings.EnumMemberValueOutOfItsUnderylingTypeRange( member.Value, member.Name, underlyingType.Name), "members"); } instance.AddMember(member); } } if (metadataProperties != null) { instance.AddMetadataProperties(metadataProperties.ToList()); } instance.SetReadOnly(); return instance; }