Пример #1
0
        /// <inheritdoc />
        public List <AssetItem> FindAssetInheritances(AssetId assetId, AssetInheritanceSearchOptions searchOptions = AssetInheritanceSearchOptions.All)
        {
            var list = new List <AssetItem>();

            lock (Initialize())
            {
                ContentLinkType searchType = 0;
                if ((searchOptions & AssetInheritanceSearchOptions.Base) != 0)
                {
                    searchType |= ContentLinkType.Inheritance;
                }
                if ((searchOptions & AssetInheritanceSearchOptions.Composition) != 0)
                {
                    searchType |= ContentLinkType.CompositionInheritance;
                }

                AssetDependencies dependencies;
                if (Dependencies.TryGetValue(assetId, out dependencies))
                {
                    list.AddRange(dependencies.LinksOut.Where(p => (p.Type & searchType) != 0).Select(p => p.Item.Clone(true)));
                }
            }
            return(list);
        }
Пример #2
0
        /// <summary>
        /// Finds the assets inheriting from the specified asset id (this is a direct inheritance, not indirect).
        /// </summary>
        /// <param name="assetId">The asset identifier.</param>
        /// <param name="searchOptions">The types of inheritance to search for</param>
        /// <returns>A list of asset inheriting from the specified asset id.</returns>
        public List<AssetItem> FindAssetsInheritingFrom(Guid assetId, AssetInheritanceSearchOptions searchOptions = AssetInheritanceSearchOptions.All)
        {
            var list = new List<AssetItem>();
            lock (Initialize())
            {
                ContentLinkType searchType = 0;
                if((searchOptions & AssetInheritanceSearchOptions.Base) != 0)
                    searchType |= ContentLinkType.Inheritance;
                if((searchOptions & AssetInheritanceSearchOptions.Composition) != 0)
                    searchType |= ContentLinkType.CompositionInheritance;

                AssetDependencies dependencies;
                if (Dependencies.TryGetValue(assetId, out dependencies))
                {
                    list.AddRange(dependencies.LinksIn.Where(p => (p.Type & searchType) != 0).Select(p => p.Item.Clone(true)));
                }
            }
            return list;
        }