Example #1
0
        public FolderPluginCatalog(string folderPath, Action <TypeFinderCriteriaBuilder> configureFinder, TypeFinderCriteria finderCriteria,
                                   FolderPluginCatalogOptions options)
        {
            if (string.IsNullOrWhiteSpace(folderPath))
            {
                throw new ArgumentNullException(nameof(folderPath));
            }

            _folderPath = folderPath;
            _options    = options ?? new FolderPluginCatalogOptions();

            if (_options.TypeFinderOptions == null)
            {
                _options.TypeFinderOptions = new TypeFinderOptions();
            }

            if (_options.TypeFinderOptions.TypeFinderCriterias == null)
            {
                _options.TypeFinderOptions.TypeFinderCriterias = new List <TypeFinderCriteria>();
            }

            if (configureFinder != null)
            {
                var builder = new TypeFinderCriteriaBuilder();
                configureFinder(builder);

                var criteria = builder.Build();

                _options.TypeFinderOptions.TypeFinderCriterias.Add(criteria);
            }

            if (finderCriteria != null)
            {
                _options.TypeFinderOptions.TypeFinderCriterias.Add(finderCriteria);
            }

            if (_options.TypeFinderCriteria != null)
            {
                _options.TypeFinderOptions.TypeFinderCriterias.Add(_options.TypeFinderCriteria);
            }

            if (_options.TypeFinderCriterias?.Any() == true)
            {
                foreach (var typeFinderCriteria in _options.TypeFinderCriterias)
                {
                    var crit = typeFinderCriteria.Value;
                    crit.Tags = new List <string>()
                    {
                        typeFinderCriteria.Key
                    };

                    _options.TypeFinderOptions.TypeFinderCriterias.Add(crit);
                }
            }
        }
Example #2
0
 public FolderPluginCatalog(string folderPath, TypeFinderCriteria finderCriteria, FolderPluginCatalogOptions options) : this(folderPath, null,
                                                                                                                             finderCriteria, options)
 {
 }
Example #3
0
 public FolderPluginCatalog(string folderPath, Action <TypeFinderCriteriaBuilder> configureFinder, FolderPluginCatalogOptions options) : this(folderPath,
                                                                                                                                              configureFinder, null, options)
 {
 }
Example #4
0
 public FolderPluginCatalog(string folderPath, FolderPluginCatalogOptions options) : this(folderPath, null, null, options)
 {
 }