我有一个.NET Core MVC应用程序(C#),它使用C库(SWIG).在C#中,我需要创建其中一个类的实例,预设其回调并在服务器运行时保持其活动状态.使用此回调,我从C获取数据.我试图将对象存储在会话中,但是我只能在其中存储值:
HttpContext.Session.Set(key, value);
也尝试在启动时定义它,但是对象在初始化后被处置.在这种情况下最好的解决方案是什么?
注意:在回调函数中,我将使用SignalR发布数据.
解决方法:
在域名称空间中的某个位置创建此对象.
public static class SwiggStuff {
public static SwigObject { get; }
static SwiggStuff() {
SwigObject = new SwigObject();
}
}
现在,您可以在引用该对象所在的名称空间的任何位置访问swigobject,直到程序终止,该对象才被释放.
编辑(发布后的一年):即使此方法行之有效,也很好,但这并不是.NET Core应用程序中的真正方法. NET Core提供了自己的方式来管理作用域实例和单例.
如果您尝试在.NET Core应用程序的上下文中使用单例,请查看下面的答案.