【发布时间】:2016-11-15 11:42:08
【问题描述】:
我在 Xamarin.Forms PCL 上使用依赖服务时收到此错误。我已经看到这个错误的答案涉及iOS 和Linker。
但是,我在 Android 上运行此程序,而 Linker 已关闭。调试模式也是如此。
它告诉我的构造函数在 PCL 中找不到接口的默认构造函数。
我认为我所做的一些重命名可能是一个问题(我使用了重构工具并确保进行了所有必要的更改),所以我删除了这些文件夹/文件并重新制作了它们。还是什么都没有:(
我已经搜索和调试了几个小时。
有哪些可能会导致此错误?
我很确定我的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. 请原谅我不正确的接口命名约定以及其他一些混乱。
【问题讨论】:
标签: c# dependency-injection xamarin.android xamarin.forms stripe.net