如何解决在基本接口中定义的调用方法
| 如果我具有以下接口结构;public interface IPaymentTypeBase
{
void PayNow();
double Amount { get; set; }
}
public interface IPaymentTypePayPal : IPaymentTypeBase
{
string UserName { get; set; }
string Password { get; set; }
}
public interface IPaymentMethod<T>
{
}
然后我有以下课程;
public class PaymentTypePayPal : IPaymentTypePayPal
{
public string UserName { get; set; }
public string Password { get; set; }
public void PayNow()
{
throw new NotImplementedException();
}
}
public class PaymentMethod<T> : IPaymentMethod<T> where T : IPaymentTypeBase
{
}
然后在我的Web应用程序中有这个;
IPaymentMethod<IPaymentTypePayPal> payer = (IPaymentMethod<IPaymentTypePayPal>) new PaymentMethod<PaymentTypePayPal>();
我现在想打电话给payer.PayNow();
,但我只是迷失在接口等之中,似乎无法使之工作。
我相信这是一件简单的事情,但是根本就没有提到这一点。
有人可以帮忙吗?
编辑
这里的目的是要有一组接口,例如PayPal,Voucher,CreditCard,它们都可以执行自己的支付网关类型的东西。
因此,我想实例化一个将Payment Type作为接口的类,并调用该接口的PayNow方法。
解决方法
付款人类型为
IPaymentMethod<IPaymentTypePayPal>
。
但是IPaymentMethod<T>
被定义为
public interface IPaymentMethod<T>
{
}
因此,它没有方法,您不能在其上调用PayNow()
。
PaymentMethod<T>
同样如此,因此您也不能在on9ѭ实例上调用任何方法。
也许您可以多解释一下您的意图。
, 我不太确定为什么要使用该PaymentMethod类...但是为什么不能将接口IPaymentMethod修改为类似以下内容:
public interface IPaymentMethod<T> : IPaymentTypeBase
这样你就可以调用patNow方法了?
, 就个人而言,涉及继承时,我将使用类而不是接口。另外,在这种情况下,您的间接访问量可能会超出所需。如果您将Payment建模为抽象基类(使用PayNow()和Amount),并将PayPalPayment建模为子类,则只需从工厂实例化适当的子类即可,并已设置好方法所具有的所有灵活性,但我认为它更易于理解和维护。 (并不真正了解您的应用程序的所有其他要求)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。