protected override void CustomizeFieldDescriptor(SimplTypesScope metadataTScope, MetadataFieldDescriptorProxy fdProxy)
{
base.CustomizeFieldDescriptor(metadataTScope, fdProxy);
MetaMetadata thisMmd = TypeMmd;
if (thisMmd == null)
return;
MetaMetadataNestedField inheritedField = (MetaMetadataNestedField) SuperField;
if (inheritedField != null)
{
MetaMetadata superMmd = inheritedField.TypeMmd;
if (thisMmd == superMmd || thisMmd.IsDerivedFrom(superMmd))
{
MetadataClassDescriptor elementMetadataCD = thisMmd.GetMetadataClassDescriptor(metadataTScope);
if (elementMetadataCD != null)
fdProxy.SetElementClassDescriptor(elementMetadataCD);
else
{
Debug.WriteLine("can't bind FieldDescriptor because metadata class does not exist for: " + thisMmd.ToString());
}
}
else
{
throw new MetaMetadataException("incompatible types: " + inheritedField + " => " + this);
}
}
}