private static void SetExtProperties(object instance, XmlAttribute[] attrs)
{
PropertyCollection props = null;
if (attrs == null)
return;
for (int i = 0; i < attrs.Length; i++)
{
if (attrs[i].NamespaceURI == Keywords.MSPROPNS)
{
if (props == null)
{
object val = TypeDescriptor.GetProperties(instance)["ExtendedProperties"].GetValue(instance);
Debug.Assert(val is PropertyCollection, "We can set values only for classes that have ExtendedProperties");
props = (PropertyCollection)val;
}
string propName = XmlConvert.DecodeName(attrs[i].LocalName);
if (instance is ForeignKeyConstraint)
{
if (propName.StartsWith(Keywords.MSD_FK_PREFIX, StringComparison.Ordinal))
propName = propName.Substring(3);
else
continue;
}
if ((instance is DataRelation) && (propName.StartsWith(Keywords.MSD_REL_PREFIX, StringComparison.Ordinal)))
{
propName = propName.Substring(4);
}
else if ((instance is DataRelation) && (propName.StartsWith(Keywords.MSD_FK_PREFIX, StringComparison.Ordinal)))
{
continue;
}
props.Add(propName, attrs[i].Value);
}
}
}// SetExtProperties