我有一个Wince应用程序,该应用程序与服务进行通信,该服务通过DB执行自己的业务逻辑。
我想保留应用程序中的当前代码并在Web Api项目中实现。
我创建了控制器,在其中使用Wince应用程序中的旧代码。但是要执行此代码,我需要一个连接对象,该连接对象使我能够连接到上述服务。
此通信类位于Web Api中引用的dll中。
它称为FastyMobile.Core.dll
该类称为Instance
。它具有Create
属性和public static void Create(DatabaseType mainDatabase, DataProviderParams ConnectionParams)
{
if (_instance != null)
_instance.Dispose();
_instance = new CommunicationManager(mainDatabase, ConnectionParams);
}
方法。
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple, InstanceContextMode = InstanceContextMode.Single)]
public static class Helper
{
private static CommunicationManager _manager { get; set; }
public static CommunicationManager GetCommunicationManager
{
get { if (_manager == null) Init(); return _manager; }
}
private static void Init()
{
Network.CreateCommunicationLayer(
AppSettings.MainDatabaseType,
PluginInfo.GLOBAX_USERNAME,
PluginInfo.GLOBAX_PASSWORD,
false);
_manager = CommunicationManager.Instance;
}
}
此后,我有 CommunicationManager.Instance 用于通信。
我想找到一种在首次创建实例后保留该实例的方法。
在每次调用控制器后,在我所有的尝试之后, CommunicationManager.Instance 也被部署。
我尝试过的是: -在控制器中创建静态变量, -创建单独的静态类,在其中我使用单例保留实例,
[EnableCors(origins: "*", headers: "*", methods: "*")]
[RoutePrefix("api/transfers")]
public class TransfersController : ApiController
{
private static List<InternalTransfersData> transfersList = new List<InternalTransfersData>();
CommunicationManagerRepository _repository = new CommunicationManagerRepository();
[HttpGet]
public HttpResponseMessage Get()
{
Helper.GetCommunicationManager;
InternalTransfersUndoneBusiness business = new InternalTransfersUndoneBusiness();
transfersList = business.GetUnprocessedInternalTransfers(InternalTransferDocTypes.InternalTransferType2);
var Data = new { transfers = transfersList.ToArray() };
return Request.CreateResponse(HttpStatusCode.OK, Data);
}
//
CommunicationManager.Instance
raymond james
warren buffett
ernest giles
william blair
,然后从存储库类中的静态字段返回值。在每次通话中,所有静态字段均为空。