public void AddFragmentMask(params object[] masks) { try { Targets.AddFragmentMask(masks); } catch (Error e) { throw new Error("Error adding mask to class {0}: {1}", Util.ToNiceTypeName(GetType()), e.Message); } }
public void AddFragmentMask(params object[] masks) { var fragmentTypes = TargetType.GetFields(); foreach (var mask in masks) { Type maskType = mask.GetType(); ITarget.ValidFragmentType(maskType); if (!fragmentTypes.Any(fragmentType => fragmentType.FieldType == maskType)) { throw new Error( "Fragment mask type '{0}' is not present in this target, here is the list of valid types:\n- {1}", maskType, string.Join( "\n- ", fragmentTypes .Select(fragmentType => Util.ToNiceTypeName(fragmentType.FieldType)) .OrderBy(type => type, StringComparer.InvariantCultureIgnoreCase) ) ); } List <int> maskValues; if (_fragmentMasks == null || !_fragmentMasks.TryGetValue(maskType, out maskValues)) { if (_fragmentMasks == null) { _fragmentMasks = new Dictionary <Type, List <int> >(); } maskValues = new List <int>(); _fragmentMasks.Add(maskType, maskValues); } maskValues.Add((int)mask); } }