自定义渲染器的MissingMethodException

Dan*_*Dan 3 c# xamarin.android xamarin xamarin.forms

加载我的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);
    }
}
}
Run Code Online (Sandbox Code Playgroud)

PostListView很简单

public class PostListView : ListView
{
}
Run Code Online (Sandbox Code Playgroud)

AAA*_*ddd 6

如果您正在使用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;
    }
Run Code Online (Sandbox Code Playgroud)

注意Obsolete属性,这意味着您不需要它.但是,您的问题似乎是您的包和引用不一致.我尝试以下步骤

步骤1

  1. 清洁解决方案
  2. 删除所有项目中的bin和objs方向
  3. 重启visual studio
  4. 重建

第2步

尝试在程序包程序包中更新解决方案的所有程序包

Update-Package  –reinstall
Run Code Online (Sandbox Code Playgroud)

在此步骤之后,如果仍然没有工作,请再次尝试步骤1