public Element(RelativePathElement element, ITypeTable typeTree)
{
if (element == null) throw new ArgumentNullException("element");
if (typeTree == null) throw new ArgumentNullException("typeTree");
m_referenceTypeName = null;
m_targetName = element.TargetName;
m_elementType = RelativePathFormatter.ElementType.ForwardReference;
m_includeSubtypes = element.IncludeSubtypes;
if (!element.IsInverse && element.IncludeSubtypes)
{
if (element.ReferenceTypeId == ReferenceTypeIds.HierarchicalReferences)
{
m_elementType = RelativePathFormatter.ElementType.AnyHierarchical;
}
else if (element.ReferenceTypeId == ReferenceTypeIds.Aggregates)
{
m_elementType = RelativePathFormatter.ElementType.AnyComponent;
}
else
{
m_referenceTypeName = typeTree.FindReferenceTypeName(element.ReferenceTypeId);
}
}
else
{
if (element.IsInverse)
{
m_elementType = RelativePathFormatter.ElementType.InverseReference;
}
m_referenceTypeName = typeTree.FindReferenceTypeName(element.ReferenceTypeId);
}
}