创建通用支付库

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (11)

我正在尝试为我的一个使用Asp.Net Core的项目创建支付网关抽象,以便客户可以通过创建派生库来集成他们的支付网关。我的应用程序将加载派生库并调用方法。

namespace PaymentGateway.Core.Abstractions {

    public interface IPaymentGateway
    {

        string Name { get; }

        object CreatePaymentRequest(PaymentRequest request);

        PaymentResponse ProcessPaymentResponse(object response);

    } 
}

以下是PayPal集成库的示例

namespace PaymentGateway.PayPal
{
    class PayPal : IPaymentGateway
    {
        public string Name { get => "PayPal"; }

        public object CreatePaymentRequest(PaymentRequest request)
        {
            :
            :
        }


        public PaymentResponse ProcessPaymentResponse(object response)
        {
            :
            :
        }
    }
}

然后我的应用程序将动态加载PayPal库并执行方法。

我遇到的问题是我不确定CreatePaymentRequest()将返回的数据类型,因为它是特定于网关的,我需要按原样使用。类似地,对于ProcessPaymentResponse(),参数类型是特定于网关的,并且类型将在网关库中定义。

现在我被迫使用System.Object。有没有更好的解决方案?

提问于
用户回答回答于
namespace PaymentGateway.Core.Abstractions {

    public interface IPaymentGateway
    {

        string Name { get; }

        T CreatePaymentRequest<T>(PaymentRequest request);

        PaymentResponse ProcessPaymentResponse<T>(T response);

    } 
}

而不是返回object为什么不使它通用并让它们传递类型?

扫码关注云+社区

领取腾讯云代金券