本文介绍了跨所有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控制器/操作方法共享的全局静态对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-29 01:55