private SuppressingPiiContext(bool needPiiSuppression, PiiMap piiMap) { this.needPiiSuppression = needPiiSuppression; this.piiMap = piiMap; this.previousContext = SuppressingPiiContext.currentContext; SuppressingPiiContext.currentContext = this; }
public static object TryRedact(PropertyDefinition property, object original, PiiMap piiMap) { if (original == null) { return(original); } if (!SuppressingPiiProperty.Initialized || SuppressingPiiProperty.piiDataRedaction == null) { Type type = original.GetType(); if (type.IsValueType) { return(Activator.CreateInstance(type)); } return(null); } else { if (!SuppressingPiiProperty.piiDataRedaction.Enable) { return(original); } object result = original; MethodInfo redactor; if (SuppressingPiiProperty.piiDataRedaction.TryGetRedactor(property, out redactor)) { if (piiMap != null && !SuppressingPiiProperty.piiDataRedaction.NeedAddIntoPiiMap(property, original)) { piiMap = null; } if (property.Type.IsArray) { result = SuppressingPiiProperty.RedactArray(original, redactor, piiMap); } else { result = SuppressingPiiProperty.RedactSingleOrListValue(original, redactor, piiMap); } } return(result); } }
private static object RedactArray(object original, MethodInfo redactor, PiiMap piiMap) { object[] array = new object[3]; array[0] = original; object[] array2 = array; object result = redactor.Invoke(null, array2); string[] array3 = (string[])array2[1]; string[] array4 = (string[])array2[2]; if (piiMap != null && array3 != null && array4 != null) { for (int i = 0; i < array3.Length; i++) { if (!string.IsNullOrEmpty(array3[i])) { piiMap[array4[i]] = array3[i]; } } } return(result); }
internal static IDisposable Create(bool needPiiSuppression, PiiMap piiMap) { return(new SuppressingPiiContext(needPiiSuppression, piiMap)); }
private static object RedactSingleValue(object original, MethodInfo redactor, PiiMap piiMap) { object[] array = new object[3]; array[0] = original; object[] array2 = array; object result = redactor.Invoke(null, array2); string value = (string)array2[1]; string key = (string)array2[2]; if (piiMap != null && !string.IsNullOrEmpty(value)) { piiMap[key] = value; } return(result); }
private static object RedactSingleOrListValue(object original, MethodInfo redactor, PiiMap piiMap) { IList list = original as IList; if (list != null) { bool flag = list is MultiValuedPropertyBase; if (list.IsReadOnly) { if (!flag) { return(null); } ((MultiValuedPropertyBase)list).SetIsReadOnly(false, null); } for (int i = 0; i < list.Count; i++) { object value = SuppressingPiiProperty.RedactSingleValue(list[i], redactor, piiMap); if (flag && !(original is ProxyAddressCollection)) { list.RemoveAt(i); list.Insert(i, value); } else { list[i] = value; } } } else { original = SuppressingPiiProperty.RedactSingleValue(original, redactor, piiMap); } return(original); }