/// <summary>
        /// Adds a concrete template to the state collection
        /// </summary>
        public TemplateInfo AddConcrete(ITemplateInfo item)
        {
            var templateInfo = new TemplateInfo(item, _parameters.ItemNamespace);

            templateInfo.FullName = _templateNovelizer.GetNovelFullTypeName(item.Name, item.FullPath);

            _templateLookup.Add(item.TemplateId, templateInfo);
            _templates.Add(templateInfo);

            return templateInfo;
        }
예제 #2
0
        private List<TemplateInfo> GetRecursiveBaseTemplates(TemplateInfo parent)
        {
            var parentBases = parent.BaseTemplates.Where(x => x.Template.Name.ToUpperInvariant() != "STANDARD TEMPLATE").ToList(); // we just want NON-standard base templates
            var bases = new List<TemplateInfo>(parentBases); // we instance this collection off as it gets modified during the enumeration of parentBases (thus we couldn't enumerate it)

            foreach (var baseTemplate in parentBases)
            {
                bases.AddRange(GetRecursiveBaseTemplates(baseTemplate));
            }

            return bases;
        }
 /// <summary>
 /// Adds a friend interface template to the state collection. Friend interfaces may be used as base interfaces for the same template locally.
 /// </summary>
 public void AddFriendInterface(TemplateInfo item)
 {
     _friendInterfaceLookup.Add(item.Template.TemplateId, item);
 }
        /// <summary>
        /// Adds a interface template to the state collection
        /// </summary>
        public TemplateInfo AddInterface(ITemplateInfo item, string interfaceSuffix)
        {
            if (_friendInterfaceLookup.ContainsKey(item.TemplateId)) throw new InvalidOperationException("The template " + item.FullPath + " is already added as a friend interface and cannot be added again.");

            var templateInfo = new TemplateInfo(item, _parameters.InterfaceNamespace);

            string interfaceName = "I" + item.Name.AsIdentifier() + interfaceSuffix;
            string interfaceFullPath = item.FullPath.Substring(0, item.FullPath.LastIndexOf('/') + 1) + interfaceName;

            templateInfo.FullName = _interfaceNovelizer.GetNovelFullTypeName(interfaceName, interfaceFullPath);

            _interfaceLookup.Add(item.TemplateId, templateInfo);
            _interfaces.Add(templateInfo);

            return templateInfo;
        }