加载我的MainPage Visual Studio进入中断模式时出现以下错误
System.MissingMethodException:找不到类型Test.Renderers.PostListViewAndroid的默认构造函数
我更新了我的Custom Renderer类以支持2.5,因为从版本2.5开始,Context已经过时了
我的自定义渲染器是
[assembly: ExportRenderer(typeof(PostListView), typeof(PostListViewAndroid))]
namespace SocialNetwork.Droid.Renderers
{
public class PostListViewAndroid: ListViewRenderer
{
public PostListViewAndroid(Context context) : base(context)
{
}
protected override void OnElementChanged(ElementChangedEventArgs<ListView> e)
{
base.OnElementChanged(e);
Control.SetSelector(Android.Resource.Color.Transparent);
}
}
}
PostListView很简单
public class PostListView : ListView
{
}
如果您使用的是Xamarin.Forms> = 2.5,则需要使用ListViewRenderer(Context context) : base(context)
这是当前ListViewRenderer
的来源
public class ListViewRenderer : ViewRenderer<ListView, AListView>, SwipeRefreshLayout.IOnRefreshListener
{
...
public ListViewRenderer(Context context) : base(context)
{
AutoPackage = false;
}
[Obsolete("This constructor is obsolete as of version 2.5. Please use ListViewRenderer(Context) instead.")]
public ListViewRenderer()
{
AutoPackage = false;
}
请注意Obsolete
属性,这意味着您不需要它。但是,您的问题似乎是您的包和引用不一致。我尝试以下步骤
第1步
第2步
尝试在程序包程序包中更新解决方案的所有程序包
Update-Package –reinstall
在此步骤之后,如果仍然没有工作,请再次尝试步骤1
如果基类没有默认的空构造函数(在你的情况下是ListViewRenderer
) - 你不能这样做。如果有,请在下面添加
public PostListViewAndroid()
{
}
其原因很简单:在实例化中派生类时,调用第一个基类构造函数进行初始化。因此,如果基类中没有默认构造函数,它就无法解决问题。
我有一个类似的问题,但我的情况是我忘了将上下文承包商作为一个公众。
我改变了这个:
PostListViewAndroid(Context context) : base(context)
对此:
public PostListViewAndroid(Context context) : base(context)