/// <exclude />
public static bool TryGetDescriptors(XElement fieldReferenceElement, out DataTypeDescriptor typeDescriptor, out DataFieldDescriptor fieldDescriptor)
{
typeDescriptor = null;
fieldDescriptor = null;
if (fieldReferenceElement.Name != _fieldReferenceElementName)
{
throw new InvalidOperationException(string.Format("Unexpected element name '{0}'. Expected '{1}'",
fieldReferenceElement.Name, _fieldReferenceElementName));
}
string typeManagerName = fieldReferenceElement.Attribute(_fieldReferenceTypeAttributeName).Value;
string fieldName = fieldReferenceElement.Attribute(_fieldReferenceFieldAttributeName).Value;
Type t = TypeManager.TryGetType(typeManagerName);
if (t == null)
{
return(false);
}
typeDescriptor = DynamicTypeManager.GetDataTypeDescriptor(t.GetImmutableTypeId());
if (typeDescriptor == null)
{
return(false);
}
if (fieldName == "DataSourceId")
{
fieldDescriptor = new DataFieldDescriptor(Guid.Empty, "DataSourceId", StoreFieldType.LargeString, typeof(string));
return(true);
}
fieldDescriptor = typeDescriptor.Fields.Where(f => f.Name == fieldName).FirstOrDefault();
if (fieldDescriptor == null)
{
return(false);
}
return(true);
}