public AutoItemConfigAttribute(AutoItemConfigFlags flags = AutoItemConfigFlags.None, params object[] acceptableValues) { if (acceptableValues.Length > 0) { var avList = (flags & AutoItemConfigFlags.AVIsList) == AutoItemConfigFlags.AVIsList; if (!avList && acceptableValues.Length != 2) { throw new ArgumentException("Range mode for acceptableValues (flag AVIsList not set) requires either 0 or 2 params; received " + acceptableValues.Length + ".\nThe description provided was: \"" + desc + "\"."); } var iType = acceptableValues[0].GetType(); for (var i = 1; i < acceptableValues.Length; i++) { if (iType != acceptableValues[i].GetType()) { throw new ArgumentException("Types of all acceptableValues must match"); } } var avbVariety = avList ? typeof(AcceptableValueList <>).MakeGenericType(iType) : typeof(AcceptableValueRange <>).MakeGenericType(iType); this.avb = (AcceptableValueBase)Activator.CreateInstance(avbVariety, acceptableValues); this.avbType = iType; } this.flags = flags; }
public AutoItemConfigAttribute(string desc, AutoItemConfigFlags flags = AutoItemConfigFlags.None, params object[] acceptableValues) : this(flags, acceptableValues) { this.desc = desc; }
public AutoItemConfigAttribute(string name, string desc, AutoItemConfigFlags flags = AutoItemConfigFlags.None, params object[] acceptableValues) : this(desc, flags, acceptableValues) { this.name = name; }