Handling User试图添加一个在c#中出现重复id错误的新用户



我正在尝试创建用户定义的函数,用于处理用户尝试添加具有重复id 的新用户

我创建了这个:

public class DuplicateIdException:Exception
{
public DuplicateIdException(String message) : base(message)
{
}
public override string Message => $" --- {base.Message} --- ";
}
public class TestDuplicateIdException
{
static void validate(List<Object> Users)
{
bool flag = false;
Type DataType = Users[0].GetType();
List<DataType> UsersConverter = Users.Cast<DataType>().ToList();
flag = UsersConverter.Any(x => x.Id == Id);
if (flag)
{
throw new DuplicateIdException("Sorry, You duplicate the Id");
}
}
}

我有很多对象类型,它们都有Id属性,但当我调用对象时。是不是出现了一个错误,无法工作。。那么,我如何检查它们并完成异常?

您可以为所有具有id的类创建基类,如果需要,它可以是接口或基类。

public class EntityBase
{
public int Id { get; set; }
}

然后继承/实现它

public class Users : EntityBase
{

}
public class Order : EntityBase
{
}

然后用基类/接口进行验证

public class ValidateDuplidateId
{
static void Validate(IEnumerable<EntityBase> entities,int id)
{
if (entities.Any(x => x.Id == id))
throw new Exception("Duplicate Id Found");
}
}

我不喜欢这种为处理业务逻辑错误而抛出异常的方法,对我来说,更好的方法是类似

public class Validator
{
public static bool IsDuplicateId(IEnumerable<EntityBase> entities,int id)
{
if (entities.Any(x => x.Id == id))
return  true;
return false;
}
}

然后我将添加一个通用的操作结果类来处理任何类型的对象

public class OperationReuslt<T>
{
public T Result { get; set; }
public bool Success { get; set; }
public string Message { get; set; }
}

在我的用户服务中(例如(

public class UserSerivce
{
public OperationReuslt<Users>AddUser(int id)
{
//replace this with data from your actual data source
List<Users> users = new List<Users>();
if(Validator.IsDuplicateId(users,id))
{
return new OperationReuslt<Users>
{
Success = false,
Message = "Duplicate UserId"
};
}
// else proceed 
}
}

您可以使用这种方法,因为它更可读,并且不会像抛出异常方法那样存在性能缺陷,但最终这一切都取决于您的情况

最新更新