找不到类型"MyClass"的默认构造函数



我正在尝试从xamarin.forms渲染自定义视图

[程序集:ExportRenderer(类型为(SwipeableCard),类型为(CardContainer)]。

但是一个错误像一样抛出

找不到类型为"Com.andinde.CardContainer"的默认构造函数。

我想这是因为卡容器没有默认的构造函数。我不能提供一个,因为它继承了Adapterview。

我做错了什么。任何帮助都会得到通知。

我认为这是Xamarin中的一个已知错误。不过,我在依赖服务方面也遇到了同样的问题。我通过在iOS构建选项的链接器行为中设置"仅链接框架SDK"来解决这个问题。

您已经发现自己做错了什么。ExportRenderer需要一个默认构造函数才能执行它正在执行的操作。为什么从AdapterView继承会阻止您拥有默认构造函数?

你应该能够做一些类似的事情:

public class CardContainer
{
    public CardContainer() // This is a default constructor
        : base(...) // If base class requires arguments, pass them here
    {
    }
}

这不是Xamarin上的错误,你必须知道如何管理链接的程序集。Xamarin中的所有运行时工作都会出现这样的错误,例如,当程序集没有链接时,你无法在运行时获得类的peroperty或在运行时创建实例。你可以手动管理链接的程序集,或者在应用程序选项中设置这些程序集,如Alessio Campanelli在这里回答的那样,如果你不手动设置,你的应用程序将在像apk文件这样的发布包中获得大尺寸。如何手动设置?

  1. 在你的android应用程序中创建一个xml文件,名称为"linked.xml"
  2. 右键单击并转到"linked.xml"的属性,并将"Build Action"设置为"LinkDescription"
  3. 添加运行时使用的程序集,如下所示:
    <?xml version="1.0" encoding="utf-8" ?>
    <linker>
      <assembly fullname="Newtonsoft.Json">
        <type fullname="*" />
      </assembly>
    </linker>

xamarin 中的链接器

Xamarin Forms PCL:System.MissingMethodException:默认构造函数找不到类型

每当您使用类进行依赖项注入或使用特定于设备的类时,通常都会发生这种情况。您可以通过调试进行尝试。我也遇到过同样的问题,但通过给出typeof属性的当前类来解决它。不应提供服务或任何其他接口名称:

[assembly: Xamarin.Forms.Dependency(typeof(Name Of Class))]

而不是:

[assembly: Xamarin.Forms.Dependency(typeof(Name Of Interface))]

从ViewRenderer继承并提供CardContainer作为本机视图类型可能会更好。然后覆盖ViewRenderer的OnElementChanged方法,并为渲染器构造一个新的CardContainer。下面是一个简短的版本,可以让你开始。

注册:

[assembly: ExportRenderer(typeof(SwipeableCard), typeof(SwipeableCardRenderer ))]

类别定义:

 SwipeableCardRenderer : ViewRenderer<SwipeableCard, CardContainer>

OnElementChanged覆盖:

if (this.Control == null)
{
    this.SetNativeControl(new CardContainer(this.Context));
}

在Xamarin中更新所有nuget包后,我也面临这个问题。

最后我使用一些间接修复

我用伪调用了一个类

ex(isLogged==从未达到"55")

    //added this code to fix default constructor issue for appshell pages
    if(isLogged == "55")
    {
        MainPage = new HomePage();
    }

相关内容

最新更新