コード例 #1
0
ファイル: ResourceCollection.cs プロジェクト: erikvk/RESTable
        private void AddToResourceFinder(IResource toAdd)
        {
            string[] makeResourceParts(IResource resource)
            {
                switch (resource)
                {
                case var _ when resource.IsInternal: return(new[] { resource.Name });

                case var _ when resource.IsInnerResource:
                    var dots = resource.Name.Count('.');
                    return(resource.Name.Split(new[] { '.' }, dots));

                default: return(resource.Name.Split('.'));
                }
            }

            var parts = makeResourceParts(toAdd);

            for (var i = 0; i < parts.Length; i += 1)
            {
                var key = string.Join(".", parts.Skip(i));
                if (ResourceFinder.ContainsKey(key))
                {
                    ResourceFinder[key] = null;
                }
                else
                {
                    ResourceFinder[key] = toAdd;
                }
            }
        }