/// <summary>
        /// The target interfaces to use for registration by default in a PAC.WPF project.
        /// </summary>
        /// <returns>List of inherited interfaces to search for.</returns>
        public static List <ModelLookupData> DependencyInjectionWPFDefaultInterfaceList()
        {
            var interfaceList = DependencyInjectionPACDefaultInterfaceList();

            interfaceList.Add(ModelLookupData.Init(WPFConstants.WPFNamespace, WPFConstants.ContractNamePresentation));
            return(interfaceList);
        }
        /// <summary>
        /// Determines the type of PAC contract the interface inherits.
        /// </summary>
        /// <param name="source">The source interface.</param>
        /// <returns>The target type of contract implemented.</returns>
        public static (bool presenter, bool controller, bool abstraction) ContractType(CsInterface source)
        {
            if (source == null)
            {
                return(false, false, false);
            }

            if (!source.IsLoaded)
            {
                return(false, false, false);
            }

            var presenter = ModelLookupData.Init(WPFConstants.WPFAssemblyName, WPFConstants.ContractNamePresentation);
            var contract  = source.HasInterface(presenter);

            if (contract != null)
            {
                return(true, false, false);
            }

            var controller = ModelLookupData.Init(WPFConstants.PACNamespace, WPFConstants.ContractNameController);

            contract = source.HasInterface(controller);

            if (contract != null)
            {
                return(false, true, false);
            }

            var abstraction = ModelLookupData.Init(WPFConstants.PACNamespace, WPFConstants.ContractNameAbstraction);

            contract = source.HasInterface(abstraction);

            return(contract != null ? (false, false, true) : (false, false, false));
        }
 /// <summary>
 /// The base classes that should be ignored in a PAC.WPF based project for registration.
 /// </summary>
 /// <returns>List of base classes to ignore</returns>
 public static List <ModelLookupData> DependencyInjectionWPFBaseClassIgnoreList()
 {
     return(new List <ModelLookupData>
     {
         ModelLookupData.Init(WPFConstants.WPFNamespace, WPFConstants.ApplicationBaseClassName)
     });
 }
 /// <summary>
 /// The target interfaces to use for registration by default in a PAC project.
 /// </summary>
 /// <returns>List of inherited interfaces to search for.</returns>
 public static List <ModelLookupData> DependencyInjectionPACDefaultInterfaceList()
 {
     return(new List <ModelLookupData>
     {
         ModelLookupData.Init(WPFConstants.PACNamespace, WPFConstants.ContractNameAbstraction),
         ModelLookupData.Init(WPFConstants.PACNamespace, WPFConstants.ContractNameController)
     });
 }
 /// <summary>
 /// Gets a list of standard base classes that should not be registered for dependency injection in a AspNet based project.
 /// </summary>
 /// <returns></returns>
 public static List <ModelLookupData> DependencyInjectionIgnoreBaseClasses()
 {
     return(new List <ModelLookupData> {
         ModelLookupData.Init(AspNetConstants.MvcNamespace, AspNetConstants.ControllerBaseClassName)
     });
 }