public XamlIlTypeExtensionNode(IXamlIlLineInfo lineInfo, IXamlIlAstTypeReference value, IXamlIlType systemType) : base(lineInfo) { _systemType = systemType; Type = new XamlIlAstClrTypeReference(this, systemType); Value = value; }
public XamlIlAstNamePropertyReference(IXamlIlLineInfo lineInfo, IXamlIlAstTypeReference declaringType, string name, IXamlIlAstTypeReference targetType) : base(lineInfo) { DeclaringType = declaringType; Name = name; TargetType = targetType; }
public XamlIlAstNewClrObjectNode(IXamlIlLineInfo lineInfo, IXamlIlAstTypeReference type, List <IXamlIlAstValueNode> arguments) : base(lineInfo) { Type = type; Arguments = arguments; }
public static IXamlIlType GetClrType(this IXamlIlAstTypeReference r) { if (r is XamlIlAstClrTypeReference clr) { return(clr.Type); } throw new XamlIlParseException($"Unable to convert {r} to CLR type", r); }
public XamlIlDeferredContentNode(IXamlIlAstValueNode value, XamlIlTransformerConfiguration config) : base(value) { Value = value; var funcType = config.TypeSystem.GetType("System.Func`2") .MakeGenericType(config.TypeMappings.ServiceProvider, config.WellKnownTypes.Object); Type = new XamlIlAstClrTypeReference(value, funcType); }
public static IXamlIlAvaloniaPropertyNode CreateNode(XamlIlAstTransformationContext context, string propertyName, IXamlIlAstTypeReference selectorTypeReference, IXamlIlLineInfo lineInfo) { XamlIlAstNamePropertyReference forgedReference; var parser = new PropertyParser(); var parsedPropertyName = parser.Parse(new CharacterReader(propertyName.AsSpan())); if (parsedPropertyName.owner == null) { forgedReference = new XamlIlAstNamePropertyReference(lineInfo, selectorTypeReference, propertyName, selectorTypeReference); } else { var xmlOwner = parsedPropertyName.ns; if (xmlOwner != null) { xmlOwner += ":"; } xmlOwner += parsedPropertyName.owner; var tref = XamlIlTypeReferenceResolver.ResolveType(context, xmlOwner, false, lineInfo, true); var propertyFieldName = parsedPropertyName.name + "Property"; var found = tref.Type.GetAllFields() .FirstOrDefault(f => f.IsStatic && f.IsPublic && f.Name == propertyFieldName); if (found == null) { throw new XamlIlParseException( $"Unable to find {propertyFieldName} field on type {tref.Type.GetFullName()}", lineInfo); } return(new XamlIlAvaloniaPropertyFieldNode(context.GetAvaloniaTypes(), lineInfo, found)); } var clrProperty = ((XamlIlAstClrProperty) new XamlIlPropertyReferenceResolver().Transform(context, forgedReference)); return(new XamlIlAvaloniaPropertyNode(lineInfo, context.Configuration.TypeSystem.GetType("Avalonia.AvaloniaProperty"), clrProperty)); }
public static XamlIlAvaloniaPropertyNode CreateNode(XamlIlAstTransformationContext context, string propertyName, IXamlIlAstTypeReference selectorTypeReference, IXamlIlLineInfo lineInfo) { XamlIlAstNamePropertyReference forgedReference; var parser = new PropertyParser(); var parsedPropertyName = parser.Parse(new CharacterReader(propertyName.AsSpan())); if (parsedPropertyName.owner == null) { forgedReference = new XamlIlAstNamePropertyReference(lineInfo, selectorTypeReference, propertyName, selectorTypeReference); } else { var xmlOwner = parsedPropertyName.ns; if (xmlOwner != null) { xmlOwner += ":"; } xmlOwner += parsedPropertyName.owner; var tref = XamlIlTypeReferenceResolver.ResolveType(context, xmlOwner, false, lineInfo, true); forgedReference = new XamlIlAstNamePropertyReference(lineInfo, tref, parsedPropertyName.name, tref); } var clrProperty = ((XamlIlAstClrProperty) new XamlIlPropertyReferenceResolver().Transform(context, forgedReference)); return(new XamlIlAvaloniaPropertyNode(lineInfo, context.Configuration.TypeSystem.GetType("Avalonia.AvaloniaProperty"), clrProperty)); }
public override void VisitChildren(Visitor visitor) { Value = (IXamlIlAstValueNode)Value.Visit(visitor); Type = (IXamlIlAstTypeReference)Type.Visit(visitor); }
public XamlIlAstRuntimeCastNode(IXamlIlLineInfo lineInfo, IXamlIlAstValueNode value, IXamlIlAstTypeReference castTo) : base(lineInfo) { Value = value; Type = castTo; }
public bool Equals(IXamlIlAstTypeReference other) => other is XamlIlAstXmlTypeReference xml &&
public override void VisitChildren(Visitor visitor) { TargetType = (IXamlIlAstTypeReference)TargetType.Visit(visitor); }
public XamlIlStaticExtensionNode(XamlIlAstObjectNode lineInfo, IXamlIlAstTypeReference targetType, string member) : base(lineInfo) { TargetType = targetType; Member = member; }
public override void VisitChildren(Visitor visitor) { Value = Value.Visit(visitor) as IXamlIlAstTypeReference; }
public XamlIlAstObjectNode(IXamlIlLineInfo lineInfo, IXamlIlAstTypeReference type) : base(lineInfo) { Type = type; }
public XamlIlToArrayNode(IXamlIlLineInfo lineInfo, IXamlIlAstTypeReference arrayType, IXamlIlAstValueNode value) : base(lineInfo) { Type = arrayType; Value = value; }
public bool Equals(IXamlIlAstTypeReference other) => other is XamlIlAstClrTypeReference clr && clr.Type.Equals(Type) &&