Esempio n. 1
0
        XElement ToProviderElement(TypeDefinition type, string name)
        {
            var attr = ContentProviderAttribute.FromTypeDefinition(type);

            if (attr == null)
            {
                return(null);
            }

            IEnumerable <MetaDataAttribute>           metadata = MetaDataAttribute.FromCustomAttributeProvider(type);
            IEnumerable <GrantUriPermissionAttribute> grants   = GrantUriPermissionAttribute.FromTypeDefinition(type);
            IEnumerable <IntentFilterAttribute>       intents  = IntentFilterAttribute.FromTypeDefinition(type);

            XElement element = attr.ToElement(PackageName);

            if (element.Attribute(attName) == null)
            {
                element.Add(new XAttribute(attName, name));
            }
            element.Add(metadata.Select(md => md.ToElement(PackageName)));
            element.Add(grants.Select(intent => intent.ToElement(PackageName)));
            element.Add(intents.Select(intent => intent.ToElement(PackageName)));

            return(element);
        }
Esempio n. 2
0
        XElement ToElement <TAttribute> (TypeDefinition type, string name, Func <TypeDefinition, TAttribute> parser, Func <TAttribute, XElement> toElement, Action <TAttribute, XElement> update)
            where TAttribute : class
        {
            TAttribute attr = parser(type);

            if (attr == null)
            {
                return(null);
            }

            IEnumerable <MetaDataAttribute>     metadata = MetaDataAttribute.FromCustomAttributeProvider(type);
            IEnumerable <IntentFilterAttribute> intents  = IntentFilterAttribute.FromTypeDefinition(type);

            XElement element = toElement(attr);

            if (element.Attribute(attName) == null)
            {
                element.Add(new XAttribute(attName, name));
            }
            element.Add(metadata.Select(md => md.ToElement(PackageName)));
            element.Add(intents.Select(intent => intent.ToElement(PackageName)));
            if (update != null)
            {
                update(attr, element);
            }
            return(element);
        }