You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
[generator] Ensure property setter parameter name is "value" (#566)
Fixes: #565
In a case with generics, we were not renaming the property setter
parameter to `value`, which meant it could be left as `p0`, which is
not valid C#:
// This method is explicitly implemented as a member of an instantiated Google.Android.Material.DatePicker.IDateSelector
global::Java.Lang.Object global::Google.Android.Material.DatePicker.IDateSelector.Selection {
// Metadata.xml XPath method reference: path="/api/package[@name='com.google.android.material.datepicker']/interface[@name='DateSelector']/method[@name='getSelection' and count(parameter)=0]"
[Register ("getSelection", "()Ljava/lang/Object;", "GetGetSelectionHandler:Google.Android.Material.DatePicker.IDateSelectorInvoker, Xamarin.Google.Android.Material")]
get {
return Selection;
}
// Metadata.xml XPath method reference: path="/api/package[@name='com.google.android.material.datepicker']/interface[@name='DateSelector']/method[@name='setSelection' and count(parameter)=1 and parameter[1][@type='S']]"
[Register ("setSelection", "(Ljava/lang/Object;)V", "GetSetSelection_Ljava_lang_Object_Handler:Google.Android.Material.DatePicker.IDateSelectorInvoker, Xamarin.Google.Android.Material")]
set {
Selection = global::Java.Interop.JavaObjectExtensions.JavaCast<global::Java.Lang.Long>(p0);
}
}
This would result in a C# error:
error CS0103: The name 'p0' does not exist in the current context.
The fix is to temporarily override the property's setter's parameter
name to `value` so that we emit compilable C# code:
set {
Selection = JavaObjectExtensions.JavaCast<Long>(value);
}
0 commit comments