asp.net 服务响应-使用静态方法在类代码中创建对象或在控制器中创建新对象

u3r8eeie  于 2023-02-10  发布在  .NET
关注(0)|答案(1)|浏览(115)

我有ServiceResponse类:

public class ServiceResponse
{
    public List<string> Errors { get; set; }
    public bool Succeeded { get; set; }
    public object Data { get; set; }

    public ServiceResponse() { }  

    public ServiceResponse(object result, List<string> errors, bool success)
    {
        Errors = errors;
        Data = result;
        Succeeded = success;
    }

    public static ServiceResponse Success(object result)
    {
        return new ServiceResponse(result, new(), true);
    }

    public static ServiceResponse Failure(List<string> errors)
    {
        return new ServiceResponse(new(), errors, false);
    }
}

在我的controllers中,我称之为:

List<string> errors = new List<string>();

 try
 {
     return ServiceResponse.Success(await Mediator.Send(request));
 }
 catch (Exception ex)
 {
     errors.Add(ex.Message);
     return ServiceResponse.Failure(errors);
 }

我认为这是比在控制器中创建ServiceResponse对象更简洁的解决方案,但是如果两个人调用同一个控制器,这会产生问题吗?A有可能从B那里得到ServiceResponse吗?

xwmevbvl

xwmevbvl1#

人员A是否有机会从人员B获得ServiceResponse
不会。虽然静态成员变量是跨线程共享的,但静态方法的局部变量不是。在您的情况下,在静态方法中访问的变量都是局部的,因此它们是安全的。

相关问题