Xamarin.Forms PCL上使用依赖服务时,我收到此错误。我已经看到了涉及iOSLinker的此错误的答案。
但是,我在Android上运行它,并且Linker已关闭。 Debug模式也是如此。

它告诉我的构造函数无法在PCL中找到接口(interface)的默认构造函数。

我认为这可能与我进行的重命名有关(我使用了重构工具并确保已进行所有必要的更改),所以我删除了这些文件夹/文件并对其进行了重新制作。依然没有 :(

我已经搜索和调试了几个小时。
有哪些可能导致此错误的事情?
我很确定自己的DependencyService实现是正确的,因此我觉得它有所不同。

这是我的相关代码。

界面:

namespace Enchantum.Functions
{
public interface PaymentProcessor
{

    void setUpCard(String cardNumber,
        int expirationMonth,
        int expirationYear,
        String CVC);

    Task cardTokenizer();

    void backendCardCharge();

}

安卓:
[assembly: Xamarin.Forms.Dependency(typeof(PaymentProcessor_Android))]

namespace Enchantum.Droid.Functions_Android
{
class PaymentProcessor_Android : PaymentProcessor
{
public PaymentProcessor_Android() { }

    private Card mCard;
    private Token mToken;

    public void setUpCard(String cardNumber, int expirationMonth,
        int expirationYear, String cvcCode)
    {
        Card card = new Card
        {
            Number = cardNumber,
            ExpiryMonth = expirationMonth,
            ExpiryYear = expirationYear,
            CVC = cvcCode
        };

        mCard = card;
    }

    public async Task cardTokenizer()
    {
        mToken = await StripeClient.CreateToken(mCard);
    }

    /*TODO:
     * */

    public void backendCardCharge()
    {
        throw new NotImplementedException();
    }

iOS:
[assembly: Xamarin.Forms.Dependency(typeof(PaymentProcessor_iOS))]

namespace Enchantum.iOS.Functions_iOS
{
class PaymentProcessor_iOS : PaymentProcessor
{
public PaymentProcessor_iOS() { }

    private Card mCard;
    private Token mToken;

    public void setUpCard(String cardNumber, int expirationMonth,
        int expirationYear, String cvcCode)
    {
        Card card = new Card
        {
            Number = cardNumber,
            ExpiryMonth = expirationMonth,
            ExpiryYear = expirationYear,
            CVC = cvcCode
        };

        mCard = card;

    }

    public async Task cardTokenizer()
    {
        mToken = await StripeClient.CreateToken(mCard);
    }

    /*TODO:*/
    public void backendCardCharge()
    {
        throw new NotImplementedException();
    }




}

Xamarin.Form内容页面中的实现:
DependencyService.Get<PaymentProcessor>().setUpCard(
                    cardNumber,
                    expirationMonth,
                    expirationYear,
                    CVC);

我的错误再次出现:“System.MissingMethodException:找不到类型为Enchantum.Functions.PaymentProcessor的默认构造函数”

怎么了?

P.S. 请原谅我对接口(interface)的错误命名约定以及其他困惑情况。

最佳答案

也许您可以尝试将接口(interface)实现类设为public,您的构造函数是可见的,但类本身可能不可见。

像这样:

[assembly: Xamarin.Forms.Dependency(typeof(PaymentProcessor_Android))]

namespace Enchantum.Droid.Functions_Android
{
public class PaymentProcessor_Android : PaymentProcessor //make the class public
{

 //your code here

 }
}

关于c# - Xamarin DependencyService : System. MissingMethodException:[接口(interface)]找不到默认构造函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38342298/

10-12 00:39
查看更多