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); }
internal static OrganizationId Deserialize(OrganizationIdXML value) { if (value == null) { return(null); } return(OrganizationIdXML.OrganizationIdGetter(ADObjectIdXML.Deserialize(value.OrganizationalUnit), ADObjectIdXML.Deserialize(value.ConfigurationUnit))); }
internal override bool TryGetValue(ProviderPropertyDefinition pdef, out object result) { result = OrganizationIdXML.Deserialize(this); return(true); }