我有一个关于如何制作以下方法的通用方法以及如何调用通用方法的问题。我想做一个我可以使用的通用方法。
private async Task<bool> GetObjA()
{
var ObjA = await _unitOfWork.RepositoryA.CheckExists(TableField, TableFieldValue);
if (ObjA != null)
{
ValidatedObjects.Add(TableName.ToLower(), ObjA);
return true;
}
return false;
}
private async Task<bool> GetObjB()
{
var ObjB = await _unitOfWork.RepositoryB.CheckExists(TableField, TableFieldValue);
if (ObjB != null)
{
ValidatedObjects.Add(TableName.ToLower(), ObjB);
return true;
}
return false;
}
private async Task<bool> GetObjC()
{
var ObjC = await _unitOfWork.RepositoryC.CheckExists(TableField, TableFieldValue);
if (ObjC != null)
{
ValidatedObjects.Add(TableName.ToLower(), ObjC);
return true;
}
return false;
}
回答1
您可以通过创建一个将对象作为参数接收的通用方法来实现这一点。
这个片段应该可以完成这项工作:
private async Task<bool> GetObj<T>(T myObject)
{
if (myObject != null)
{
ValidatedObjects.Add(TableName.ToLower(), myObject);
return true;
}
return false;
}
解释:
与其在方法中获取对象,不如将其作为通用数据类型传递给方法。这意味着您将在方法之外使用 unitOfWork,这样您就可以通用并避免每次都重复自己。
参考:
https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/generics/generic-methods