/// <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; }
/// <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); }