Example #1
0
        public bool IsCompatibleTemplate(Guid templateId, Type template)
        {
            // template Type must at least implement IItemWrapper
            if (!template.ImplementsInterface(typeof(IItemWrapper)) || !TemplateMap.ContainsKey(templateId))
            {
                return(false);
            }

            if (template.IsInterface)
            {
                return(TemplateMap[templateId].Any(type => type.ImplementsInterface(template)));
            }
            else
            {
                // Get interface of template to check
                var templateType  = TemplateMap.FirstOrDefault(p => p.Value.Contains(template)).Key;
                var interfaceType = InterfaceTemplateMap.FirstOrDefault(i => i.Value == templateType).Key;

                // Get interface of item to chack
                var interfaceToCheck = InterfaceTemplateMap.FirstOrDefault(i => i.Value == templateId).Key;

                return(interfaceToCheck == interfaceType || interfaceToCheck.ImplementsInterface(interfaceType));
            }
        }