public bool TryConvert <T>(object source, out T result) { TypeConverterDelegate <T> converter = TypeConverterLookup <T> .TryConvert; return(converter != null ? converter(source, out result) : TryCoreConvert(source, out result)); }
internal static TypeConverterDelegate GetTypeConverterDelegate(Type elementType) { var attrs = elementType.GetCustomAttributes(typeof(XamlSetTypeConverterAttribute), true) as XamlSetTypeConverterAttribute[]; if (attrs != null && attrs.Length > 0) { var name = attrs[0].XamlSetTypeConverterHandler; var method = elementType.GetMethod(name, BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic); return((TypeConverterDelegate)TypeConverterDelegate.CreateDelegate(typeof(TypeConverterDelegate), method)); } return(null); }
public ITypeConverter Register <T>(TypeConverterDelegate <T> converter) { TypeConverterLookup <T> .TryConvert = converter; return(this); }