public IdentifiableItemBase(IIdentifiable itemInstance, IComposition composition) { Contract.Requires(itemInstance != null, "itemInstance != null"); Contract.Requires(composition != null, "composition != null"); _composition = composition; _guid = Guid.NewGuid().ToString(); _cachedInstanceId = itemInstance.Id; _cachedInstanceDescribes = new Describes(itemInstance); _cachedCaptionEdited = false; _cachedDescriptionEdited = false; _itemInstance = itemInstance; _xConstructor = Constructor(itemInstance); _xConnectivity = Connectivity(itemInstance); if (itemInstance is IBaseLinkableComponentProposed) _platforms = ((IBaseLinkableComponentProposed)itemInstance).SupportedPlatforms; else if (itemInstance is IBaseExchangeItemProposed) _platforms = ((IBaseExchangeItemProposed)itemInstance).SupportedPlatforms; else _platforms = composition.Platforms; if (itemInstance is IBaseLinkableComponent) _interface = IdentifiableItemType.IBaseLinkableComponent; else if (itemInstance is IBaseAdaptedOutput) _interface = IdentifiableItemType.IBaseAdaptedOutput; else if (itemInstance is IBaseOutput) _interface = IdentifiableItemType.IBaseOutput; else if (itemInstance is IBaseInput) _interface = IdentifiableItemType.IBaseInput; else if (itemInstance is IAdaptedOutputFactory) _interface = IdentifiableItemType.IAdaptedOutputFactory; else _interface = IdentifiableItemType.Unknown; }
public virtual void Initialise(XElement xElement, IDocumentAccessor accessor) { xElement = Persistence.ThisOrSingleChild(XName, xElement); _guid = Utilities.Xml.GetAttribute(xElement, "id"); _cachedInstanceId = Utilities.Xml.GetAttribute(xElement, "instanceId"); var interfaceType = Utilities.Xml.GetAttribute(xElement, "interface"); _cachedCaptionEdited = Utilities.Xml.GetAttribute(xElement, "captionEdited", false); _cachedDescriptionEdited = Utilities.Xml.GetAttribute(xElement, "descriptionEdited", false); var caption = Utilities.Xml.GetAttribute(xElement, "caption"); var description = _cachedDescriptionEdited ? xElement.Element("Description").Value : "Description unavailable until ItemInstance(composition) accessed"; _cachedInstanceDescribes = new Describes(caption, description); _cachedCaptionEdited = true; _xConstructor = Persistence.ThisOrSingleChild(XConstructor, xElement); _xConnectivity = Persistence.ThisOrSingleChild(XConnectivity, xElement); _platforms = Persistence.PlatformsChi.Parse(xElement, accessor); _interface = (IdentifiableItemType)Enum.Parse(typeof(IdentifiableItemType), interfaceType); }