{
class BoundsTypeConverter : ICompiledTypeConverter
{
- IEnumerable<Instruction> ICompiledTypeConverter.ConvertFromString(string value, ILContext context, BaseNode node)
+ public IEnumerable<Instruction> ConvertFromString(string value, ILContext context, BaseNode node)
{
var module = context.Body.Method.Module;
yield return Instruction.Create(OpCodes.Newobj, rectangleCtorRef);
}
}
-}
\ No newline at end of file
+}
{
static class NodeILExtensions
{
+ public static bool CanConvertValue(this ValueNode node, ILContext context, TypeReference targetTypeRef, IEnumerable<ICustomAttributeProvider> attributeProviders)
+ {
+ TypeReference typeConverter = null;
+ foreach (var attributeProvider in attributeProviders) {
+ CustomAttribute typeConverterAttribute;
+ if (
+ (typeConverterAttribute =
+ attributeProvider.CustomAttributes.FirstOrDefault(
+ cad => TypeConverterAttribute.TypeConvertersType.Contains(cad.AttributeType.FullName))) != null) {
+ typeConverter = typeConverterAttribute.ConstructorArguments[0].Value as TypeReference;
+ break;
+ }
+ }
+
+ return node.CanConvertValue(context, targetTypeRef, typeConverter);
+ }
+
+ public static bool CanConvertValue(this ValueNode node, ILContext context, FieldReference bpRef)
+ {
+ var module = context.Body.Method.Module;
+ var targetTypeRef = bpRef.GetBindablePropertyType(node, module);
+ var typeConverter = bpRef.GetBindablePropertyTypeConverter(module);
+ return node.CanConvertValue(context, targetTypeRef, typeConverter);
+ }
+
+ public static bool CanConvertValue(this ValueNode node, ILContext context, TypeReference targetTypeRef, TypeReference typeConverter)
+ {
+ var str = (string)node.Value;
+ var module = context.Body.Method.Module;
+
+ //If there's a [TypeConverter], use it
+ if (typeConverter != null && str != null) {
+ var typeConvAttribute = typeConverter.GetCustomAttribute(module.ImportReference(typeof(TypeConversionAttribute)));
+ if (typeConvAttribute == null) //trust the unattributed TypeConverter
+ return true;
+ var toType = typeConvAttribute.ConstructorArguments.First().Value as TypeReference;
+ return toType.InheritsFromOrImplements(targetTypeRef);
+ }
+
+ ///No reason to return false
+ return true;
+ }
+
public static IEnumerable<Instruction> PushConvertedValue(this ValueNode node, ILContext context,
TypeReference targetTypeRef, IEnumerable<ICustomAttributeProvider> attributeProviders,
IEnumerable<Instruction> pushServiceProvider, bool boxValueTypes, bool unboxValueTypes)
if (bpRef == null)
return false;
- if (node is ValueNode)
+ var valueNode = node as ValueNode;
+ if (valueNode != null && valueNode.CanConvertValue(context, bpRef))
return true;
var elementNode = node as IElementNode;
var property = parent.VariableType.GetProperty(pd => pd.Name == localName, out declaringTypeReference);
if (property == null)
return false;
+ var propertyType = property.ResolveGenericPropertyType(declaringTypeReference, module);
var propertySetter = property.SetMethod;
if (propertySetter == null || !propertySetter.IsPublic || propertySetter.IsStatic)
return false;
- if (node is ValueNode)
+ var valueNode = node as ValueNode;
+ if (valueNode != null && valueNode.CanConvertValue(context, propertyType, new ICustomAttributeProvider[] { property, propertyType.Resolve()}))
return true;
var elementNode = node as IElementNode;
return false;
var vardef = context.Variables [elementNode];
- var propertyType = property.ResolveGenericPropertyType(declaringTypeReference, module);
var implicitOperator = vardef.VariableType.GetImplicitOperatorTo(propertyType, module);
if (implicitOperator != null)
namespace Xamarin.Forms
{
[Xaml.ProvideCompiled("Xamarin.Forms.Core.XamlC.BindablePropertyConverter")]
+ [Xaml.TypeConversion(typeof(BindableProperty))]
public sealed class BindablePropertyConverter : TypeConverter, IExtendedTypeConverter
{
object IExtendedTypeConverter.ConvertFrom(CultureInfo culture, object value, IServiceProvider serviceProvider)
namespace Xamarin.Forms
{
[Xaml.ProvideCompiled("Xamarin.Forms.Core.XamlC.BindingTypeConverter")]
+ [Xaml.TypeConversion(typeof(Binding))]
public sealed class BindingTypeConverter : TypeConverter
{
public override object ConvertFromInvariantString(string value)
namespace Xamarin.Forms
{
[Xaml.ProvideCompiled ("Xamarin.Forms.Core.XamlC.BoundsTypeConverter")]
+ [Xaml.TypeConversion(typeof(Rectangle))]
public sealed class BoundsTypeConverter : TypeConverter
{
public override object ConvertFromInvariantString(string value)
}
}
+ [Xaml.TypeConversion(typeof(ButtonContentLayout))]
public sealed class ButtonContentTypeConverter : TypeConverter
{
public override object ConvertFromInvariantString(string value)
namespace Xamarin.Forms
{
[Xaml.ProvideCompiled("Xamarin.Forms.Core.XamlC.ColorTypeConverter")]
+ [Xaml.TypeConversion(typeof(Color))]
public class ColorTypeConverter : TypeConverter
{
// Supported inputs
namespace Xamarin.Forms
{
[Xaml.ProvideCompiled("Xamarin.Forms.Core.XamlC.ConstraintTypeConverter")]
+ [Xaml.TypeConversion(typeof(Constraint))]
public class ConstraintTypeConverter : TypeConverter
{
public override object ConvertFromInvariantString(string value)
namespace Xamarin.Forms
{
+ [Xaml.TypeConversion(typeof(FileImageSource))]
public sealed class FileImageSourceConverter : TypeConverter
{
public override object ConvertFromInvariantString(string value)
namespace Xamarin.Forms
{
+ [Xaml.TypeConversion(typeof(double))]
public class FontSizeConverter : TypeConverter, IExtendedTypeConverter
{
[Obsolete("IExtendedTypeConverter.ConvertFrom is obsolete as of version 2.2.0. Please use ConvertFromInvariantString (string, IServiceProvider) instead.")]
namespace Xamarin.Forms
{
+ [Xaml.TypeConversion(typeof(Font))]
public sealed class FontTypeConverter : TypeConverter
{
public override object ConvertFromInvariantString(string value)
namespace Xamarin.Forms
{
+ [Xaml.TypeConversion(typeof(GridLength))]
public class GridLengthTypeConverter : TypeConverter
{
public override object ConvertFromInvariantString(string value)
namespace Xamarin.Forms
{
+ [Xaml.TypeConversion(typeof(ImageSource))]
public sealed class ImageSourceConverter : TypeConverter
{
public override object ConvertFromInvariantString(string value)
namespace Xamarin.Forms
{
+ [Xaml.TypeConversion(typeof(Keyboard))]
public class KeyboardTypeConverter : TypeConverter
{
public override object ConvertFromInvariantString(string value)
namespace Xamarin.Forms
{
[Xaml.ProvideCompiled("Xamarin.Forms.Core.XamlC.LayoutOptionsConverter")]
+ [Xaml.TypeConversion(typeof(LayoutOptions))]
public sealed class LayoutOptionsConverter : TypeConverter
{
public override object ConvertFromInvariantString(string value)
using System;
+using System.Collections.Generic;
using System.Linq;
namespace Xamarin.Forms
{
[Xaml.ProvideCompiled("Xamarin.Forms.Core.XamlC.ListStringTypeConverter")]
+ [Xaml.TypeConversion(typeof(List<string>))]
public class ListStringTypeConverter : TypeConverter
{
public override object ConvertFromInvariantString(string value)
namespace Xamarin.Forms
{
+ [Xaml.TypeConversion(typeof(Point))]
public class PointTypeConverter : TypeConverter
{
public override object ConvertFromInvariantString(string value)
namespace Xamarin.Forms
{
[Xaml.ProvideCompiled("Xamarin.Forms.Core.XamlC.RectangleTypeConverter")]
+ [Xaml.TypeConversion(typeof(Rectangle))]
public class RectangleTypeConverter : TypeConverter
{
public override object ConvertFromInvariantString(string value)
namespace Xamarin.Forms
{
[Xaml.ProvideCompiled("Xamarin.Forms.Core.XamlC.ThicknessTypeConverter")]
+ [Xaml.TypeConversion(typeof(Thickness))]
public class ThicknessTypeConverter : TypeConverter
{
public override object ConvertFromInvariantString(string value)
--- /dev/null
+using System;
+
+namespace Xamarin.Forms.Xaml
+{
+ [System.AttributeUsage(AttributeTargets.Class, Inherited = true, AllowMultiple = false)]
+ public sealed class TypeConversionAttribute : Attribute
+ {
+ public Type TargetType { get; private set; }
+
+ public TypeConversionAttribute(Type targetType)
+ {
+ TargetType = targetType;
+ }
+ }
+}
\ No newline at end of file
namespace Xamarin.Forms
{
[Xaml.ProvideCompiled("Xamarin.Forms.Core.XamlC.TypeTypeConverter")]
+ [Xaml.TypeConversion(typeof(Type))]
public sealed class TypeTypeConverter : TypeConverter, IExtendedTypeConverter
{
[Obsolete("IExtendedTypeConverter.ConvertFrom is obsolete as of version 2.2.0. Please use ConvertFromInvariantString (string, IServiceProvider) instead.")]
namespace Xamarin.Forms
{
[Xaml.ProvideCompiled("Xamarin.Forms.Core.XamlC.UriTypeConverter")]
+ [Xaml.TypeConversion(typeof(Uri))]
public class UriTypeConverter : TypeConverter
{
public override object ConvertFromInvariantString(string value)
return false;
}
}
-}
\ No newline at end of file
+}
namespace Xamarin.Forms
{
+ [Xaml.TypeConversion(typeof(UrlWebViewSource))]
public class WebViewSourceTypeConverter : TypeConverter
{
public override object ConvertFromInvariantString(string value)
if (value != null)
return new UrlWebViewSource { Url = value };
- throw new InvalidOperationException(string.Format("Cannot convert \"{0}\" into {1}", value, typeof(Color)));
+ throw new InvalidOperationException(string.Format("Cannot convert \"{0}\" into {1}", value, typeof(UrlWebViewSource)));
}
}
}
\ No newline at end of file
<Compile Include="TextAlignmentElement.cs" />
<Compile Include="PaddingElement.cs" />
<Compile Include="IPaddingElement.cs" />
+ <Compile Include="TypeConversionAttribute.cs" />
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />
<ItemGroup>
namespace Xamarin.Forms.Pages
{
+ [Xaml.TypeConversion(typeof(JsonSource))]
public class JsonSourceConverter : TypeConverter
{
public override object ConvertFromInvariantString(string value)
Uri uri;
if (Uri.TryCreate(value, UriKind.Absolute, out uri) && uri.Scheme != "file")
return new UriJsonSource { Uri = uri };
- if (value.StartsWith("[") || value.StartsWith("{"))
+ if (value.StartsWith("[", StringComparison.OrdinalIgnoreCase) || value.StartsWith("{", StringComparison.OrdinalIgnoreCase))
return new StringJsonSource { Json = value };
}
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" ?>
+<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
+ xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
+ x:Class="Xamarin.Forms.Xaml.UnitTests.Bz55862"
+ Foo="2"/>
\ No newline at end of file
--- /dev/null
+using System;
+using NUnit.Framework;
+using Xamarin.Forms.Core.UnitTests;
+
+namespace Xamarin.Forms.Xaml.UnitTests
+{
+ [TypeConverter(typeof(ThicknessTypeConverter))]
+ public struct Bz55862Bar
+ {
+ }
+
+ [XamlCompilation(XamlCompilationOptions.Skip)]
+ public partial class Bz55862 : ContentPage
+ {
+ public Bz55862Bar Foo { get; set; }
+ public Bz55862()
+ {
+ InitializeComponent();
+ }
+
+ public Bz55862(bool useCompiledXaml)
+ {
+ //this stub will be replaced at compile time
+ }
+
+ [TestFixture]
+ class Tests
+ {
+ [SetUp]
+ public void Setup()
+ {
+ Device.PlatformServices = new MockPlatformServices();
+ }
+
+ [TearDown]
+ public void TearDown()
+ {
+ Device.PlatformServices = null;
+ }
+
+ [TestCase(true)]
+ [TestCase(false)]
+ public void BindingContextWithConverter(bool useCompiledXaml)
+ {
+ if (useCompiledXaml)
+ Assert.That(() => MockCompiler.Compile(typeof(Bz55862)), Throws.Exception.TypeOf<XamlParseException>());
+ else
+ Assert.That(() => new Bz55862(useCompiledXaml), Throws.Exception.TypeOf<XamlParseException>());
+ }
+ }
+ }
+}
<Compile Include="Issues\Bz60203.xaml.cs">
<DependentUpon>Bz60203.xaml</DependentUpon>
</Compile>
+ <Compile Include="Issues\Bz55862.xaml.cs">
+ <DependentUpon>Bz55862.xaml</DependentUpon>
+ </Compile>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<Import Project="..\.nuspec\Xamarin.Forms.Debug.targets" />
<EmbeddedResource Include="Issues\Bz60203.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</EmbeddedResource>
+ <EmbeddedResource Include="Issues\Bz55862.xaml">
+ <Generator>MSBuild:UpdateDesignTimeXaml</Generator>
+ </EmbeddedResource>
</ItemGroup>
<ItemGroup>
<Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
--- /dev/null
+<Type Name="TypeConversionAttribute" FullName="Xamarin.Forms.Xaml.TypeConversionAttribute">
+ <TypeSignature Language="C#" Value="public sealed class TypeConversionAttribute : Attribute" />
+ <TypeSignature Language="ILAsm" Value=".class public auto ansi sealed beforefieldinit TypeConversionAttribute extends System.Attribute" />
+ <AssemblyInfo>
+ <AssemblyName>Xamarin.Forms.Core</AssemblyName>
+ <AssemblyVersion>2.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Base>
+ <BaseTypeName>System.Attribute</BaseTypeName>
+ </Base>
+ <Interfaces />
+ <Attributes>
+ <Attribute>
+ <AttributeName>System.AttributeUsage(System.AttributeTargets.Class, AllowMultiple=false, Inherited=true)</AttributeName>
+ </Attribute>
+ </Attributes>
+ <Docs>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ <Members>
+ <Member MemberName=".ctor">
+ <MemberSignature Language="C#" Value="public TypeConversionAttribute (Type targetType);" />
+ <MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(class System.Type targetType) cil managed" />
+ <MemberType>Constructor</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>2.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <Parameters>
+ <Parameter Name="targetType" Type="System.Type" />
+ </Parameters>
+ <Docs>
+ <param name="targetType">To be added.</param>
+ <summary>To be added.</summary>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ <Member MemberName="TargetType">
+ <MemberSignature Language="C#" Value="public Type TargetType { get; }" />
+ <MemberSignature Language="ILAsm" Value=".property instance class System.Type TargetType" />
+ <MemberType>Property</MemberType>
+ <AssemblyInfo>
+ <AssemblyVersion>2.0.0.0</AssemblyVersion>
+ </AssemblyInfo>
+ <ReturnValue>
+ <ReturnType>System.Type</ReturnType>
+ </ReturnValue>
+ <Docs>
+ <summary>To be added.</summary>
+ <value>To be added.</value>
+ <remarks>To be added.</remarks>
+ </Docs>
+ </Member>
+ </Members>
+</Type>
<InterfaceName>Xamarin.Forms.IExtendedTypeConverter</InterfaceName>
</Interface>
</Interfaces>
+ <Attributes>
+ <Attribute>
+ <AttributeName>Xamarin.Forms.Xaml.TypeConversion(typeof(Xamarin.Forms.BindableProperty))</AttributeName>
+ </Attribute>
+ </Attributes>
<Docs>
<summary>A <see cref="T:Xamarin.Forms.TypeConverter" /> for bindable properties.</summary>
<remarks>To be added.</remarks>
<BaseTypeName>Xamarin.Forms.TypeConverter</BaseTypeName>
</Base>
<Interfaces />
+ <Attributes>
+ <Attribute>
+ <AttributeName>Xamarin.Forms.Xaml.TypeConversion(typeof(Xamarin.Forms.Binding))</AttributeName>
+ </Attribute>
+ </Attributes>
<Docs>
<summary>Type converter that converts from strings to <see cref="T:Xamarin.Forms.Binding" /> objects.</summary>
<remarks>To be added.</remarks>
<BaseTypeName>Xamarin.Forms.TypeConverter</BaseTypeName>
</Base>
<Interfaces />
+ <Attributes>
+ <Attribute>
+ <AttributeName>Xamarin.Forms.Xaml.TypeConversion(typeof(Xamarin.Forms.Rectangle))</AttributeName>
+ </Attribute>
+ </Attributes>
<Docs>
<summary>A <see cref="T:Xamarin.Forms.TypeConverter" /> that converts strings into <see cref="T:Xamarin.Forms.Rectangle" />s for use with <see cref="T:Xamarin.Forms.AbsoluteLayout" />s.</summary>
<remarks>To be added.</remarks>
<BaseTypeName>Xamarin.Forms.TypeConverter</BaseTypeName>
</Base>
<Interfaces />
+ <Attributes>
+ <Attribute>
+ <AttributeName>Xamarin.Forms.Xaml.TypeConversion(typeof(Xamarin.Forms.Button/ButtonContentLayout))</AttributeName>
+ </Attribute>
+ </Attributes>
<Docs>
<summary>Class that the XAML parser uses to convert strings to <see cref="T:Xamarin.Forms.Button+ButtonContentLayout" /> objects.</summary>
<remarks>To be added.</remarks>
<BaseTypeName>Xamarin.Forms.TypeConverter</BaseTypeName>
</Base>
<Interfaces />
+ <Attributes>
+ <Attribute>
+ <AttributeName>Xamarin.Forms.Xaml.TypeConversion(typeof(Xamarin.Forms.Color))</AttributeName>
+ </Attribute>
+ </Attributes>
<Docs>
<summary>A <see cref="T:Xamarin.Forms.TypeConverter" /> that converts from strings to a <see cref="T:Xamarin.Forms.Color" />.</summary>
<remarks>
<BaseTypeName>Xamarin.Forms.TypeConverter</BaseTypeName>
</Base>
<Interfaces />
+ <Attributes>
+ <Attribute>
+ <AttributeName>Xamarin.Forms.Xaml.TypeConversion(typeof(Xamarin.Forms.Constraint))</AttributeName>
+ </Attribute>
+ </Attributes>
<Docs>
<summary>A <see cref="T:Xamarin.Forms.TypeConverter" /> that converts from strings to a <see cref="T:Xamarin.Forms.Constraint" />.</summary>
<remarks>To be added.</remarks>
<BaseTypeName>Xamarin.Forms.TypeConverter</BaseTypeName>
</Base>
<Interfaces />
+ <Attributes>
+ <Attribute>
+ <AttributeName>Xamarin.Forms.Xaml.TypeConversion(typeof(Xamarin.Forms.FileImageSource))</AttributeName>
+ </Attribute>
+ </Attributes>
<Docs>
<summary>A <see cref="T:Xamarin.Forms.TypeConverter" /> that converts to <see cref="P:Xamarin.Forms.FileImageSource" />.</summary>
<remarks>To be added.</remarks>
<InterfaceName>Xamarin.Forms.IExtendedTypeConverter</InterfaceName>
</Interface>
</Interfaces>
+ <Attributes>
+ <Attribute>
+ <AttributeName>Xamarin.Forms.Xaml.TypeConversion(typeof(System.Double))</AttributeName>
+ </Attribute>
+ </Attributes>
<Docs>
<summary>Converts a string into a font size.</summary>
<remarks>To be added.</remarks>
<BaseTypeName>Xamarin.Forms.TypeConverter</BaseTypeName>
</Base>
<Interfaces />
+ <Attributes>
+ <Attribute>
+ <AttributeName>Xamarin.Forms.Xaml.TypeConversion(typeof(Xamarin.Forms.Font))</AttributeName>
+ </Attribute>
+ </Attributes>
<Docs>
<summary>A <see cref="T:Xamarin.Forms.TypeConverter" /> that converts from strings to <see cref="T:Xamarin.Forms.Core.Font" />.</summary>
<remarks>String should be formatted as "[name],[attributes],[size]" there may be multiple attributes, e.g. "Georgia, Bold, Italic, 42"</remarks>
<BaseTypeName>Xamarin.Forms.TypeConverter</BaseTypeName>
</Base>
<Interfaces />
+ <Attributes>
+ <Attribute>
+ <AttributeName>Xamarin.Forms.Xaml.TypeConversion(typeof(Xamarin.Forms.GridLength))</AttributeName>
+ </Attribute>
+ </Attributes>
<Docs>
<summary>A <see cref="T:Xamarin.Forms.TypeConverter" /> that converts from strings to <see cref="T:Xamarin.Forms.GridLength" />s.</summary>
<remarks>
<BaseTypeName>Xamarin.Forms.TypeConverter</BaseTypeName>
</Base>
<Interfaces />
+ <Attributes>
+ <Attribute>
+ <AttributeName>Xamarin.Forms.Xaml.TypeConversion(typeof(Xamarin.Forms.ImageSource))</AttributeName>
+ </Attribute>
+ </Attributes>
<Docs>
<summary>Class that takes a string representation of an image file location and returns a <see cref="T:Xamarin.Forms.ImageSource" /> from the specified resource.</summary>
<remarks>To be added.</remarks>
<BaseTypeName>Xamarin.Forms.TypeConverter</BaseTypeName>
</Base>
<Interfaces />
+ <Attributes>
+ <Attribute>
+ <AttributeName>Xamarin.Forms.Xaml.TypeConversion(typeof(Xamarin.Forms.Keyboard))</AttributeName>
+ </Attribute>
+ </Attributes>
<Docs>
<summary>A <see cref="T:Xamarin.Forms.TypeConverter" /> that converts a string into a <see cref="T:Xamarin.Forms.Keyboard" />.</summary>
<remarks>
<BaseTypeName>Xamarin.Forms.TypeConverter</BaseTypeName>
</Base>
<Interfaces />
+ <Attributes>
+ <Attribute>
+ <AttributeName>Xamarin.Forms.Xaml.TypeConversion(typeof(Xamarin.Forms.LayoutOptions))</AttributeName>
+ </Attribute>
+ </Attributes>
<Docs>
<summary>Class that takes a string representation of a <see cref="T:Xamarin.Forms.LayoutOptions" /> and returns a corresponding <see cref="T:Xamarin.Forms.LayoutOptions" />.</summary>
<remarks>To be added.</remarks>
<BaseTypeName>Xamarin.Forms.TypeConverter</BaseTypeName>
</Base>
<Interfaces />
+ <Attributes>
+ <Attribute>
+ <AttributeName>Xamarin.Forms.Xaml.TypeConversion(typeof(System.Collections.Generic.List`1<System.String>))</AttributeName>
+ </Attribute>
+ </Attributes>
<Docs>
<summary>Type converter for converting properly formatted string lists to lists.</summary>
<remarks>To be added.</remarks>
<BaseTypeName>Xamarin.Forms.TypeConverter</BaseTypeName>
</Base>
<Interfaces />
+ <Attributes>
+ <Attribute>
+ <AttributeName>Xamarin.Forms.Xaml.TypeConversion(typeof(Xamarin.Forms.Point))</AttributeName>
+ </Attribute>
+ </Attributes>
<Docs>
<summary>A <see cref="T:Xamarin.Forms.TypeConverter" /> that converts from a string to a <see cref="T:Xamarin.Forms.Point" />.</summary>
<remarks>To be added.</remarks>
<BaseTypeName>Xamarin.Forms.TypeConverter</BaseTypeName>
</Base>
<Interfaces />
+ <Attributes>
+ <Attribute>
+ <AttributeName>Xamarin.Forms.Xaml.TypeConversion(typeof(Xamarin.Forms.Rectangle))</AttributeName>
+ </Attribute>
+ </Attributes>
<Docs>
<summary>A <see cref="T:Xamarin.Forms.TypeConverter" /> that converts a string to a <see cref="T:Xamarin.Forms.Rectangle" />.</summary>
<remarks>To be added.</remarks>
<BaseTypeName>Xamarin.Forms.TypeConverter</BaseTypeName>
</Base>
<Interfaces />
+ <Attributes>
+ <Attribute>
+ <AttributeName>Xamarin.Forms.Xaml.TypeConversion(typeof(Xamarin.Forms.Thickness))</AttributeName>
+ </Attribute>
+ </Attributes>
<Docs>
<summary>A <see cref="T:Xamarin.Forms.TypeConverter" /> that converts from a string to a <see cref="T:Xamarin.Forms.Thickness" />.</summary>
<remarks>To be added.</remarks>
<InterfaceName>Xamarin.Forms.IExtendedTypeConverter</InterfaceName>
</Interface>
</Interfaces>
+ <Attributes>
+ <Attribute>
+ <AttributeName>Xamarin.Forms.Xaml.TypeConversion(typeof(System.Type))</AttributeName>
+ </Attribute>
+ </Attributes>
<Docs>
<summary>Class that takes a string representation of a <see cref="T:System.Type" /> and returns a corresponding <see cref="T:System.Type" />.</summary>
<remarks>To be added.</remarks>
<BaseTypeName>Xamarin.Forms.TypeConverter</BaseTypeName>
</Base>
<Interfaces />
+ <Attributes>
+ <Attribute>
+ <AttributeName>Xamarin.Forms.Xaml.TypeConversion(typeof(System.Uri))</AttributeName>
+ </Attribute>
+ </Attributes>
<Docs>
<summary>A <see cref="T:Xamarin.Forms.TypeConverter" /> that converts from a string or <see cref="T:System.Uri" /> to a <see cref="T:System.Uri" />.</summary>
<remarks>To be added.</remarks>
<BaseTypeName>Xamarin.Forms.TypeConverter</BaseTypeName>
</Base>
<Interfaces />
+ <Attributes>
+ <Attribute>
+ <AttributeName>Xamarin.Forms.Xaml.TypeConversion(typeof(Xamarin.Forms.UrlWebViewSource))</AttributeName>
+ </Attribute>
+ </Attributes>
<Docs>
<summary>A <see cref="T:Xamarin.Forms.TypeConverter" /> that converts a string to a <see cref="T:Xamarin.Forms.UrlWebViewSource" />.</summary>
<remarks>To be added.</remarks>
<Type Name="IValueProvider" Kind="Interface" />
<Type Name="IXamlTypeResolver" Kind="Interface" />
<Type Name="IXmlLineInfoProvider" Kind="Interface" />
+ <Type Name="TypeConversionAttribute" Kind="Class" />
<Type Name="XamlParseException" Kind="Class" />
<Type Name="XamlResourceIdAttribute" Kind="Class" />
<Type Name="XmlLineInfo" Kind="Class" />
<BaseTypeName>Xamarin.Forms.TypeConverter</BaseTypeName>
</Base>
<Interfaces />
+ <Attributes>
+ <Attribute>
+ <AttributeName>Xamarin.Forms.Xaml.TypeConversion(typeof(Xamarin.Forms.Pages.JsonSource))</AttributeName>
+ </Attribute>
+ </Attributes>
<Docs>
<summary>Converter that returns a <see cref="T:Xamarin.Forms.Pages.JsonSource" /> for a JSON string or a URI string.</summary>
<remarks>To be added.</remarks>