gpt4 book ai didi

c# - 服务层 - 返回验证和功能结果

转载 作者:太空狗 更新时间:2023-10-30 01:21:22 25 4
gpt4 key购买 nike

我想知道从将在 ASP.NET MVC 中使用的服务层返回验证结果的最佳实践或任何建议。

选项 1

public IEnumberable<ValidationResult> Foo(int userId, out videoId)
{
var validationResults = new List<ValidationResult>();

// Validation logic goes here...

videoId = _videoService.AddVideo();

return validationResults;
}

选项 2

public ServiceResult Foo(int userId)
{
var validationResults = new List<ValidationResult>();
var serviceResult = new ServiceResult();

// Validation logic goes here...

serviceResult.ReturnObject = _videoService.AddVideo();
serviceResult.ValidationResults = validationResults;
return serviceResult;
}

public class ServiceResult
{
public IEnumberable<ValidationResult> ValidationResults { get; set; }
public object ReturnObject { get; set; }
}

我目前正在做选项 1,因为我认为选项 2 中的装箱和拆箱可能是一个痛点。有什么想法吗?

最佳答案

如果从您的服务层返回 object,您必须在客户端代码中转换 returnobject 适当的类型/值。因此,类型检查推迟到运行时,如果您不小心,会导致 invalidcastexceptions。更重要的是,它是一种不优雅的解决方案,会污染您的代码,从而降低代码的可理解性。

如果你只想拥有一种类型,你可以使用泛型:

public class ServiceResult<T>
{
public IEnumberable<ValidationResult> ValidationResults { get; set; }
public T ResultObject
{
get;set;
}
}

如果您不喜欢这个解决方案,您可以为每个服务方法定义一个结果类型类型。

public class ResultBase
{
public IEnumerable<ValidationResult> ValidationResults { get; set; }

}
public class RegisterResult : ResultBase
{
public Video Video{get;set;}
}

关于c# - 服务层 - 返回验证和功能结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15890989/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com