示例#1
0
        /// <summary>
        /// Register a Lava Tag element.
        /// </summary>
        /// <param name="name"></param>
        /// <param name="factoryMethod"></param>
        public virtual void RegisterTag(string name, Func <string, ILavaTag> factoryMethod)
        {
            if (string.IsNullOrWhiteSpace(name))
            {
                throw new ArgumentException("Name must be specified.");
            }

            name = name.Trim().ToLower();

            var tagInstance = factoryMethod(name);

            var tagInfo = new LavaTagInfo();

            tagInfo.Name          = name;
            tagInfo.FactoryMethod = factoryMethod;

            tagInfo.IsAvailable = (tagInstance != null);

            if (tagInstance != null)
            {
                tagInfo.SystemTypeName = tagInstance.GetType().FullName;
            }

            _lavaElements[name] = tagInfo;
        }
示例#2
0
        /// <summary>
        /// Get the collection of registered Lava template elements.
        /// </summary>
        /// <returns></returns>
        public Dictionary <string, ILavaElementInfo> GetRegisteredElements()
        {
            var tags = new Dictionary <string, ILavaElementInfo>();

            foreach (var tagWrapper in _lavaElements)
            {
                var info = new LavaTagInfo();

                info.Name = tagWrapper.Key;

                info.SystemTypeName = tagWrapper.Value.SystemTypeName;

                tags.Add(info.Name, info);
            }

            return(tags);
        }