public bool TryGetValue(string name, out EnumObject enumObject) { enumObject = null; if (name == null) { return(false); } if (_closed) { return(_cachedByName.TryGetValue(name, out enumObject)); } else { foreach (var value in _values) { if (value._name == name) { enumObject = value; return(true); } } enumObject = this.BaseDescriptor?.GetValue(name); return(enumObject != null); } }
public bool TryGetValue(int value, out EnumObject enumObject) { enumObject = null; if (value == 0) { enumObject = this.DefaultValue; return((object)enumObject != null); } if (value < 1 || value > _maxValue) { return(false); } if (_closed) { enumObject = _cachedByValue[value - 1]; return(true); } else { int valuesCount = _values.Count; if (value >= _maxValue - valuesCount + 1) { enumObject = _values[value - 1]; return(true); } else { enumObject = this.BaseDescriptor?.GetValue(value); return(enumObject != null); } } }
public EnumObject CreateValue(EnumObject value) { var retargetingConstructor = _type.GetConstructor(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, retargetingConstructorSignature, null); if (retargetingConstructor != null) { return((EnumObject)retargetingConstructor.Invoke(new object[] { value })); } var baseDescriptor = this.BaseDescriptor; if (baseDescriptor != null) { return(baseDescriptor.CreateValue(value)); } throw new InvalidOperationException(_type + " must have a retargeting constructor."); }
public static T AsEnum <T>(this int value, Type enumType) where T : EnumObject { return((T)EnumObject.ByValue(enumType, value)); }
public static T AsEnum <T>(this int value) where T : EnumObject { return(EnumObject.ByValue <T>(value)); }
public static T AsEnum <T>(this string name, Type enumType) where T : EnumObject { return((T)EnumObject.ByName(enumType, name)); }
public static T AsEnum <T>(this string name) where T : EnumObject { return(EnumObject.ByName <T>(name)); }