本文介绍了跨所有API控制器/操作方法共享的全局静态对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要在Asp.Net WebAPI中的所有控制器/操作方法中公开一个单例共享对象.声明这样的全局静态对象以便所有控制器/操作方法都可以访问它的最佳位置是什么?
I need to expose a singleton shared object across all controllers/action methods in Asp.Net WebAPI. Which is the best place to declare such global static objects so that all controllers/action methods can access it?
推荐答案
您可以使用 Lazy< T>
.这样可以确保线程安全:
You can use Lazy<T>
. This will ensure thread safety:
public class Greeter
{
public static readonly Lazy<Greeter> Instance = new Lazy<Greeter>(() => new Greeter());
public Greeter()
{
// I am called once during the applications lifetime
}
public string Greet(string name)
{
return $"Hello {name}!";
}
}
然后随便使用它:
public class GreetController : ApiController
{
public IHttpActionResult Get(string name)
{
var message = Greeter.Instance.Value.Greet(name);
return Ok(message);
}
}
这篇关于跨所有API控制器/操作方法共享的全局静态对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!