Exp*_* be 2 c# asp.net interface
我正在尝试使用Interface类,我对Interface方法参数有疑问.
我有一个Interface类来使子类使用特定的方法.但是子类需要不同数量的参数.
例,
public interface IPayment
{
void MakePayment();
}
Run Code Online (Sandbox Code Playgroud)
并在子类中定义MakePayment方法.
public class PayPay : IPayment
{
public void MakePayment(string a); // it needs only one parameter
}
public class Google : IPayment
{
public void MakePayment(string a, int b); // it needs two parameters.
}
Run Code Online (Sandbox Code Playgroud)
像上面的情况一样,我该如何修改我的接口类?
谢谢!
一个干净的方法可能是简单地使用一个PaymentParameters类并使用一个名为的方法public void MakePayment(PaymentParameters params);
更改您的界面以使用PaymentParameters类,该类包含每个不同服务可能需要的所有参数.
public interface IPayment
{
void MakePayment(PaymentParameters p);
}
public class PaymentParameters{
public string A { get; set; }
public int B { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
您Google和PayPay实现将仅使用所需的参数PaymentParameters.
那么,接口的原理是不知道实现.所以接口的调用者将不知道这是否是一个Google的PayPay子类,并且将始终调用相同的方法.
但是如果你有更复杂的参数,你应该使用IPaymentParameters和这个原型的方法
public interface IPayment
{
void MakePayment(IPaymentParameters parameters);
}
Run Code Online (Sandbox Code Playgroud)
两个实现GooglePayementParameters和PayPayPaymentParameters
| 归档时间: |
|
| 查看次数: |
3172 次 |
| 最近记录: |