gpt4 book ai didi

c# - 动态更改对象的命名空间

转载 作者:太空宇宙 更新时间:2023-11-03 16:19:50 24 4
gpt4 key购买 nike

我在服务引用上使用 PayPal 的服务。众所周知,有一个 PayPal 沙盒环境。

我知道网站是否在本地运行。

我的问题是我想通过环境动态改变类的命名空间(因为这两个类具有相同的功能)。最终我希望我不必更改任何代码,但是当站点在本地运行时沙箱会自动运行,而当他在服务器上运行时是真正的产品。

我想在这之间切换:

using DynoPayPal.PayPal;

还有这个:

using DynoPayPal.SandBoxPayPal;

因此对象:PaymentDetailsItemType 例如,在第一种情况下将"is"DynoPayPal.PayPal,在第一种情况下将"is"DynoPayPal.SandBoxPayPal第二种情况。

最佳答案

您不能更改类的 namespace 。这不是他们在那里的目的,这样做毫无意义。但是,正如对您的问题的评论所指出的,您正在寻找的是依赖注入(inject)。考虑一下:

public interface IPayPal
{
void aMethod();
}


public class PayPal : IPayPal { /* ... */ }
public class SandboxPayPal : IPayPal { /* ... */ }

然后我们或许可以设想一个类,它会根据环境为我们提供正确的类:

public sealed class PayPalFactory
{
public IPayPal Create()
{
if(EnvironmentIsLive) // replace this with a proper check!
return new PayPal();
else
return new SandboxPayPal();
}
}

关于c# - 动态更改对象的命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14546142/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com