On Sep 30, 2013, at 8:00 PM, Narayan Sainaney <[email protected]> wrote:
> I have Xamarin.Android (4.8.01013) and Xamarin.iOS (1.4.2) and we have
> written a class on Android that inherits from
>
> System.Linq.Expressions.ExpressionVisitor in System.Core.dll
>
> Unfortunately, the method signature for overriding VisitMethodCall on iOS is:
>
> protected virtual void VisitMethodCall(MethodCallExpression methodCall);
>
> Whereas the Android version is:
>
> protected internal virtual Expression VisitMethodCall(MethodCallExpression
> node);
Xamarin.Android is in the right; it's Xamarin.iOS which is wrong here; I've
filed this as:
https://bugzilla.xamarin.com/show_bug.cgi?id=15089
The reason why Xamarin.Android is right is because we should preserve API
compatibility with .NET, and .NET has the Android API:
http://msdn.microsoft.com/en-us/library/system.linq.expressions.expressionvisitor.visitmethodcall.aspx
protected internal virtual Expression VisitMethodCall(
MethodCallExpression node
)
The reason why Xamarin.Android has the right signature is because we use
Microsoft's Apache-2.0-licensed DLR source, which provides ExpressionVisitor:
https://github.com/mono/mono/blob/ac11abe1/mcs/class/dlr/Runtime/Microsoft.Scripting.Core/Ast/ExpressionVisitor.cs#L409
- Jon
_______________________________________________
Monodroid mailing list
[email protected]
UNSUBSCRIBE INFORMATION:
http://lists.ximian.com/mailman/listinfo/monodroid