Пример #1
0
        public IEnumerable <ResourceInfo> Query()
        {
#if COREFX
            if (string.IsNullOrWhiteSpace(_assembly))
            {
                // TODO : Consider rework of Fluent API
                throw new InvalidOperationException($"It is not possible to execute {nameof(Query)} without first executing {nameof(From)}.");
            }
            var assembly = ResourceExtensions.GetAssemblies()
                           .First(x => x.GetName().Name.Equals(_assembly, StringComparison.OrdinalIgnoreCase));
#else
            var assembly = string.IsNullOrEmpty(_assembly)
        ? Assembly.GetCallingAssembly() :
                           AppDomain.CurrentDomain.GetAssemblies()
                           .First(x => x.GetName().Name.Equals(_assembly, StringComparison.OrdinalIgnoreCase));
#endif

            var q = assembly.GetManifestResourceNames();


            foreach (var res in assembly.GetManifestResourceNames().Where(x => x.StartsWith(_namespace)))
            {
                var file = ExtractFile(res);
                var ns   = res.Substring(0, res.Length - file.Length - 1);
                if (ns.Length < _namespace.Length)
                {
                    continue;
                }

                var nseqlen = ns.Length == _namespace.Length;
                if (!_recursive)
                {
                    if (!nseqlen)
                    {
                        continue;
                    }
                }

                yield return(new ResourceInfo
                {
                    Assembly = assembly,
                    Namespace = ns,
                    Root = _namespace,
                    RelativeRootNamespace = nseqlen ? string.Empty : ns.Substring(_namespace.Length + 1),
                    Resource = file
                });
            }
        }