gpt4 book ai didi

c# - C# 中的单连接模式

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

我们希望使用 Http Connection 的单个实例与服务器通信,因为它保证与一个端点 http 端点通信

例如:

MyConnection.GetRoute<ABC>.DoStuff()   --https://user.site.com/abc/
MyConnection.GetRoute<XYZ>.DoStuff() --https://user.site.com/xyz/

从设计模式来看,Singleton似乎是完美的案例

public class MyConnectionHelper
{
private static MyConnection instance;

private MyConnectionHelper() {}

public static MyConnectionHelper Instance
{
get{
if(instance == null){
instance = new MyConnection();
}
return instance;
}
}
}

但是我们需要一些凭据来建立连接和代理信息,如果需要的话,这些属性应该被公开

public class MyConnectionHelper
{
public static string authKey;
public static string proxyUrl;
private static MyConnection instance;

private MyConnectionHelper() {}

public static MyConnectionHelper Instance
{
get{
if(instance == null) {
instance = new MyConnection(proxyUrl, authKey);
}
return instance;
}
}
}

是否有适合此用例的更好的设计模式以及公开必需/可选参数的更好方法,这些参数可以在创建连接之前提供并在整个循环中重用。

最佳答案

您可以使用类似下面的代码。当您设置凭据时,它会标记要重置的连接。当您之后第一次访问连接时,它将重新创建连接。

private static bool resetConnection;

private static string authKey;
private static string proxyUrl;

public static string AuthKey
{
get => authKey;
set
{
authKey = value;
resetConnection = true;
}
}

public static string ProxyUrl
{
get => proxyUrl;
set
{
proxyUrl = value;
resetConnection = true;
}
}

public static MyConnection HelperInstance
{
get
{
if(resetConnection == null)
{
instance = new MyConnection(proxyUrl, authKey);
resetConnection = false;
}

if(instance == null)
{
instance = new MyConnection(proxyUrl, authKey);
resetConnection = false;
}

return instance;
}
}

关于c# - C# 中的单连接模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50922140/

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