public static void GetWrappedAttributes <T>(BaseWrapperAttribute[] wrappers, List <T> wrappedAttributes, BaseMightyMember mightyMember, object target) where T : BaseMightyAttribute { foreach (var wrapper in wrappers) { var nestedWrappers = GetAttributes <BaseWrapperAttribute>(wrapper.GetType()); if (nestedWrappers.Length > 0) { GetWrappedAttributes(nestedWrappers, wrappedAttributes, mightyMember, wrapper); } if (!mightyMember.TryGetWrapperInfoByWrapper(wrapper, out var info)) { info = new MightyWrapperInfo(target, wrapper); } foreach (var attribute in GetAttributes <T>(wrapper.GetType()).Where(x => !(x is IDoNotWrapAttribute))) { wrappedAttributes.Add(attribute); info.WrappedAttributes.Add(attribute); } mightyMember.WrappersInfo.Add(info); } }
public bool TryGetWrapperInfoByWrapper(BaseWrapperAttribute wrapper, out MightyWrapperInfo wrapperInfo) { foreach (var info in WrappersInfo) { if (!Equals(info.Wrapper, wrapper)) { continue; } wrapperInfo = info; return(true); } wrapperInfo = null; return(false); }
public bool TryGetWrapperInfoByAttribute(BaseMightyAttribute attribute, out MightyWrapperInfo wrapperInfo) { foreach (var info in WrappersInfo) { if (!info.WrappedAttributes.Contains(attribute)) { continue; } wrapperInfo = info; return(true); } wrapperInfo = null; return(false); }