Пример #1
0
        KeyValuePair <IStyleKey, object> ReadProperty(XElement reader, IStylePropertyContext context)
        {
            var name = reader.AttributeLocal("name")?.Value;

            if (string.IsNullOrWhiteSpace(name))
            {
                throw new StyleParseException("A property element must provide the name of a style-key.", reader);
            }

            var    key = LookupStyleKey(name, reader);
            object result;

            if (string.Equals(reader.AttributeLocal("inherit")?.Value, "true", StringComparison.InvariantCulture))
            {
                result = InheritMarker.Inherited;
            }
            else
            {
                var type = reader.AttributeLocal("type")?.Value;
                IStylePropertySerializer serializer = null;
                if (type != null)
                {
                    typeParsers.TryGetValue(type, out serializer);
                }
                if (serializer == null)
                {
                    serializer = LookupPropertyParser(key.ValueType, reader);
                }

                result = serializer.Parse(StyleSystem, reader, context);
            }

            return(new KeyValuePair <IStyleKey, object>(key, result));
        }
Пример #2
0
 public void RegisterPropertyParsers(IStylePropertySerializer serializer)
 {
     propertyParsers[serializer.TargetType] = serializer;
     if (serializer.TypeId != null)
     {
         typeParsers[serializer.TypeId] = serializer;
     }
     typeParsers[serializer.TargetType.FullName ?? serializer.TargetType.Name] = serializer;
 }
 bool Find(object o, out IStylePropertySerializer serializer)
 {
     foreach (var p in propertyParsers)
     {
         if (p.TargetType.IsInstanceOfType(o))
         {
             serializer = p;
             return(true);
         }
     }
     serializer = null;
     return(false);
 }
Пример #4
0
 public void RegisterSerializer(IStylePropertySerializer serializer)
 {
     parent.RegisterSerializer(serializer);
 }
Пример #5
0
 public void RegisterSerializer(IStylePropertySerializer serializer)
 {
     this.serializers.Add(serializer);
 }
Пример #6
0
 public void RegisterPropertyParsers(IStylePropertySerializer p)
 {
     conditionWriter.Register(p);
     propertyParsers.Add(p.TargetType, p);
 }
 public void Register(IStylePropertySerializer p)
 {
     propertyParsers.Add(p);
 }
Пример #8
0
 public void Register(IStylePropertySerializer p)
 {
     attributeWriter.Register(p);
 }