public object Resolve(object source, object destination, object sourceValue) { var auditValues = new List <AuditMaskType>(); AuditMaskType auditFlags = (AuditMaskType)source.GetPublicInstancePropertyValue("AuditFlags"); foreach (var f in Enum.GetValues(typeof(AuditMaskType))) { if (auditFlags.HasFlag((AuditMaskType)f) && ((AuditMaskType)f != AuditMaskType.None)) { auditValues.Add((AuditMaskType)f); } } var auditEnumType = Type.GetType($"{PnPSerializationScope.Current?.BaseSchemaNamespace}.AuditSettingsAuditAuditFlag, {PnPSerializationScope.Current?.BaseSchemaAssemblyName}", true); var auditType = Type.GetType($"{PnPSerializationScope.Current?.BaseSchemaNamespace}.AuditSettingsAudit, {PnPSerializationScope.Current?.BaseSchemaAssemblyName}", true); var target = Array.CreateInstance(auditType, auditValues.Count); for (Int32 c = 0; c < auditValues.Count; c++) { var targetAuditValue = Enum.Parse(auditEnumType, Enum.GetName(typeof(AuditMaskType), auditValues[c])); var targetAudit = Activator.CreateInstance(auditType, true); targetAudit.SetPublicInstancePropertyValue("AuditFlag", targetAuditValue); target.SetValue(targetAudit, c); } return(target); }
public object Resolve(object source, object destination, object sourceValue) { AuditMaskType auditMask = AuditMaskType.None; var audits = source.GetPublicInstancePropertyValue("Audit"); if (audits != null) { foreach (var a in (IEnumerable)audits) { auditMask |= (AuditMaskType)Enum.Parse(typeof(AuditMaskType), a.GetPublicInstancePropertyValue("AuditFlag").ToString()); } } return(auditMask); }