示例#1
0
        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);
        }