Example #1
0
        private static IEnumerable <IAttributeDefinition> GetSuggestedSelection(IAssetType assetType, Type type)
        {
            var result = new AttributeSelection();

            for (var t = type; t != null; t = t.BaseType)
            {
                var attributes = t.GetCustomAttributes(typeof(MetaDataAttribute), false);

                foreach (MetaDataAttribute attrib in attributes)
                {
                    var names = attrib.DefaultAttributeSelectionNames;

                    if (!string.IsNullOrEmpty(names))
                    {
                        foreach (var name in names.Split(','))
                        {
                            IAttributeDefinition def;

                            if (assetType.TryGetAttributeDefinition(name, out def))
                            {
                                if (!result.Contains(def))
                                {
                                    result.Add(def);
                                }
                            }
                        }
                    }
                }
            }

            return(result);
        }
Example #2
0
        private static AttributeSelection FlattenSelection(IAssetType querytype, IEnumerable <IAttributeDefinition> orig)
        {
            var selection = new AttributeSelection();

            foreach (var def in orig)
            {
                IAttributeDefinition newdef = null;

                if (def.AssetType.Is(querytype))
                {
                    if (def.AssetType == querytype || def.Base == null)
                    {
                        newdef = def;
                    }
                    else if (def.Base.AssetType.Is(querytype))
                    {
                        newdef = def.Base;
                    }
                    else
                    {
                        newdef = querytype.GetAttributeDefinition(def.Name);
                    }
                }
                else if (querytype.Is(def.AssetType))
                {
                    newdef = querytype.GetAttributeDefinition(def.Name);
                }

                if (newdef != null && !selection.Contains(newdef))
                {
                    selection.Add(newdef);
                }
            }

            return(selection);
        }