Пример #1
0
        internal static PropertyValueBaseXML Create(ProviderPropertyDefinition pdef, object value)
        {
            ADPropertyDefinition adpropertyDefinition = pdef as ADPropertyDefinition;
            IFormatProvider      formatProvider       = (adpropertyDefinition != null) ? adpropertyDefinition.FormatProvider : null;
            ADObjectId           adobjectId           = value as ADObjectId;

            if (adobjectId != null)
            {
                return(ADObjectIdXML.Serialize(adobjectId));
            }
            OrganizationId organizationId = value as OrganizationId;

            if (organizationId != null)
            {
                return(OrganizationIdXML.Serialize(organizationId));
            }
            RawSecurityDescriptor rawSecurityDescriptor = value as RawSecurityDescriptor;

            if (rawSecurityDescriptor != null)
            {
                return(new PropertyStringValueXML
                {
                    StrValue = CommonUtils.GetSDDLString(rawSecurityDescriptor)
                });
            }
            Exception ex;

            if (pdef.IsBinary)
            {
                byte[] binValue;
                if (ADValueConvertor.TryConvertValueToBinary(value, formatProvider, out binValue, out ex))
                {
                    return(new PropertyBinaryValueXML
                    {
                        BinValue = binValue
                    });
                }
                MrsTracer.Common.Warning("Failed to convert {0} to binary, will try string: {1}", new object[]
                {
                    pdef.Name,
                    CommonUtils.FullExceptionMessage(ex)
                });
            }
            PropertyStringValueXML propertyStringValueXML = new PropertyStringValueXML();
            string text;

            if (!ADValueConvertor.TryConvertValueToString(value, formatProvider, out text, out ex))
            {
                text = value.ToString();
                MrsTracer.Common.Warning("Failed to convert {0} to string, defaulting to '{1}': {2}", new object[]
                {
                    pdef.Name,
                    text,
                    CommonUtils.FullExceptionMessage(ex)
                });
            }
            propertyStringValueXML.StrValue = text;
            return(propertyStringValueXML);
        }
Пример #2
0
 internal static OrganizationId Deserialize(OrganizationIdXML value)
 {
     if (value == null)
     {
         return(null);
     }
     return(OrganizationIdXML.OrganizationIdGetter(ADObjectIdXML.Deserialize(value.OrganizationalUnit), ADObjectIdXML.Deserialize(value.ConfigurationUnit)));
 }
Пример #3
0
 internal override bool TryGetValue(ProviderPropertyDefinition pdef, out object result)
 {
     result = OrganizationIdXML.Deserialize(this);
     return(true);
 }