我有三个不同的数据库需要检查我是否已连接到。这就是我原来的功能,完美无缺。
require(['angular', 'ngResource'], function (angular) {
但是,现在我需要在DTO中记录异常消息以进行每次数据库检查。
public async Task<ServiceAvailabilityDTO> ServiceAvailabilityStatus()
{
return new ServiceAvailabilityDTO
{
IsDb1Online = await IsDb1Available(),
IsDb2Online = IsDb2Available(),
IsDb3Online = await IsDb3Available()
};
}
private async Task<bool> IsDb1Available()
{
var count = await _db1Service.GetDbCount();
if (count > 0)
return true;
return false;
}
private bool IsDb2Available()
{
if (_db2Service.GetDbCount() > 0)
return true;
return false;
}
private async Task<bool> IsDb3Available()
{
var pong = await _db3Provider.PingDb();
if(pong.Success == true && pong.Version != null)
return true;
return false;
}
我的问题是;
我可以保持我的返回方法与第一个示例中的相同,并将对象引用传递给每个方法以存储异常并仍然返回 bool 值。
或者在所有方法调用都发生之前,是否创建了对象,然后使用返回的值创建对象?
我知道我可以正常创建对象并在每个对象中传递它 方法调用,但具体是这样做的方式 激励我提出这个问题,纯粹是为了通知和学习 从
感谢。
答案 0 :(得分:1)
不,你不能这样做,因为在你正在做的事情的上下文中this
没有引用你正在填充的对象,它指的是包含你正在调用的方法的对象。
public async Task<ServiceAvailabilityDTO> ServiceAvailabilityStatus()
{
return new ServiceAvailabilityDTO
{
IsDb1Online = await IsDb1Available(),
IsDb2Online = IsDb2Available(),
IsDb3Online = await IsDb3Available(this) // here 'this' does NOT ref to ServiceAvailabilityDTO
};
}
没有 引用ServiceAvailabilityDTO
的关键字,因此您只需要创建对象,并将其传递给每个方法。在这一点上,我不认为你返回布尔值有多大意义 - 你也可以在行中设置布尔属性
public async Task<ServiceAvailabilityDTO> ServiceAvailabilityStatus()
{
var sa = new ServiceAvailabilityDTO();
await CheckDb1Available(sa);
CheckDb2Available(sa);
await CheckDb3Available(sa);
return sa;
}
(注意我已经将方法从Is*
重命名为Check*
,因为前者暗示了一个返回布尔值,后者暗示了内联的内容。)